灯饰之家讯:--楼上几位的解答,思路基本是对的,但是不严谨!
--问题1
CREATE TRIGGER Tri1 ON 进货信息表
FOR INSERT
AS
BEGIN
IF NOT EXISTS(SELECt 图书编号 FROM 图书信息表 A INNER JOIN INSERTED B ON A.图书编号 = B.图书编号)
INSERT 图书信息表(图书编号,书名,ISDN,作者,出版社,图书类型,价格)
SELECt 图书编号,书名,ISDN,作者,出版社,图书类型,价格 FROM INSERTED
IF NOT EXISTS(SELECt 图书编号 FROM 货存信息表 A INNER JOIN INSERTED B ON A.图书编号 = B.图书编号)
INSERT 货存信息表(图书编号,书名,货存量)
SELECt 图书编号,书名,0 FROM INSERTED
UPDATe 货存信息表
SET 货存量 = A.货存量 + B.进货数量
FROM 货存信息表 A INNER JOIN INSERTED B ON A.图书编号 = B.图书编号
END
GO
--问题2 需要多个触发器来实现
CREATE TRIGGER Tri2a ON 进货信息表
AFTER UPDATe
AS
BEGIN
IF UPDATE(进货数量)
UPDATE 货存信息表
SET 货存量 = B.进货数量 - C.售出数量
FROM 货存信息表 A INNER JOIN (SELECt 图书编号,SUM(进货数量) AS 进货数量
FROM 进货信息表
GROUP BY 图书编号) AS B ON A.图书编号 = B.图书编号
INNER JOIN (SELECt 图书编号,SUM(售出数量) AS 售出数量
FROM 售书信息表
GROUP BY 图书编号) AS C ON A.图书编号 = C.图书编号
INNER JOIN INSERTED D ON A.图书编号 = D.图书编号
END
GO
CREATE TRIGGER Tri2b ON 售书信息表
FOR INSERT
AS
BEGIN
UPDATe 货存信息表
SET 货存量 = A.货存量 - B.售出数量
FROM 货存信息表 A INNER JOIN INSERTED B ON A.图书编号 = B.图书编号
END
GO
CREATE TRIGGER Tri2c ON 售书信息表
AFTER UPDATe
AS
BEGIN
IF UPDATE(售出数量)
UPDATE 货存信息表
SET 货存量 = B.进货数量 - C.售出数量
FROM 货存信息表 A INNER JOIN (SELECt 图书编号,SUM(进货数量) AS 进货数量
FROM 进货信息表
GROUP BY 图书编号) AS B ON A.图书编号 = B.图书编号
INNER JOIN (SELECt 图书编号,SUM(售出数量) AS 售出数量
FROM 售书信息表
GROUP BY 图书编号) AS C ON A.图书编号 = C.图书编号
INNER JOIN INSERTED D ON A.图书编号 = D.图书编号
END
GO
--问题3
CREATE TRIGGER Tri3 ON 图书信息表
FOR INSERT
AS
BEGIN
IF EXISTS(SELECt 图书编号 FROM 图书信息表 A INNER JOIN INSERTED B ON A.图书编号 = B.图书编号)
UPDATe 图书信息表
SET 书名 = B.书名 ,
IDSN = B.IDSN ,
作者 = B.作者 ,
出版社 = B.出版社 ,
图书类型 = B.图书类型 ,
价格 = B.价格
FROM 图书信息表 A INNER JOIN INSERTED B ON A.图书编号 = B.图书编号
END
GO
灯饰之家是专注于灯饰,照明,灯具,照明灯具,灯饰大全的新闻资讯和各灯饰,照明,灯具,照明灯具,灯饰大全的装修效果图与建材网络营销等服务,敬请登陆http://dengshi.jc68.com/