我有2张表Aprovizionari(表示书籍供应)和Facturi(表示发票)。表格具有以下结构:
create table Aprovizionari
(
ID_Aprovizionare int identity(1,1) primary key,
CodCarte char(3) foreign key references Carti(CodCarte),
CodLibrarie char(3) foreign key references Librarii(CodLibrarie),
DataAprovizionare date default getdate(),
Cantitate int default 1
-- ^^^^^^^ it should decrement when Cantitate from Facturi increment
)
create table Facturi
(
CodFactura char(3) primary key,
CodClient char(4) foreign key references Clienti(CodClient),
CodCarte char(3) foreign key references Carti(CodCarte),
Cantitate int default 1,
-- ^^^^^^^ value from here must be decrement in Aprovizionari.Cantitate
CodLibrarie char(3) foreign key references Librarii(CodLibrarie),
)
Aprovizionari
(供应)存储每本图书的Cantitate
(数量)。
Facturi
(发票)中的每条记录都会存储特定图书的数量Cantitate
。
可以通过CodCarte
在两个表中识别书籍。
每次在Facturi
中记录发票时,应从Aprovizionari
中可用的图书数量中减去开具发票的图书数量。如何实现这一目标?
答案 0 :(得分:0)
根据购买的数量,即根据Facturi表更新Aprovizionari表的Cantitate列。
或者,您可以在生成任何新发票时在Facturi表上应用触发器,即插入此表中的任何新条目都会减少Aprovizionari表中的数量。
答案 1 :(得分:0)
如果您没有在太多不同的地方插入Facturi
,那么在执行Aprovizionari
后,INSERT
上执行更新应该非常容易,例如
INSERT INTO Facturi (CodCarte, Cantitate, ...)
VALUES (101, 2);
UPDATE Aprovizionari
SET Cantitate = Cantitate - 2
WHERE CodCarte = 101;
否则你可以使用触发器执行此操作:
CREATE TRIGGER Facturi_OnInsert
ON Facturi
AFTER INSERT
AS
BEGIN
UPDATE a
SET a.Cantitate = a.Cantitate - i.Cantitate
FROM Aprovizionari a
INNER JOIN INSERTED i ON i.CodCarte = a.CodCarte
END