本文介绍了我希望触发删除触发器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 创建表instock ( storeid smallint not null, wineid smallint not null, 数量smallint not null, 主键(storeid,wineid), 外键(storeid)引用商店, 外键(wineid)引用葡萄酒 ) 创建表bigstores ( storeid smallint not null, city char(20)not null, phone char(10)not null, 主键(storeid) ) 如果EXISTS(从sysobjects中选择名称 WHERE Name ='TRI_deleteINSTOCK'AND Type ='P') DROP触发器TRI_DELETEINSTOCK GO CREATE TRIGGER TRI_deleteINSTOCK ON instock FOR delete AS BEGIN DECLARE @STOREID SMALLINT, @WINID SMALLINT, @TOTALQUANTITY INT SELECT @STOREID = d.STOREID FROM del从 SELECT @wineid = d.wineid来自删除d SELECT @TOTALQUANTITY = SUM(QUANTITY) FROM INSTOCK WHERE STOREID = @ STOREID 从INSTOCK删除 WHERE storeid = @ STOREID AND wineid = @ WINEID 如果不是EXISTS(从店铺中选择店面,店铺地址= @ storeid) BEGIN 从bigstores删除 其中StoreId = @StoreId AND @totalquantity< = 50000 END END create table instock(storeid smallint not null,wineid smallint not null,quantity smallint not null,primary key (storeid, wineid),foreign key (storeid) references stores,foreign key (wineid) references wines)create table bigstores(storeid smallint not null,city char(20) not null,phone char(10) not null,primary key (storeid))IF EXISTS ( SELECT Name FROM sysobjects WHERE Name = 'TRI_deleteINSTOCK' AND Type = 'P' )DROP trigger TRI_DELETEINSTOCKGOCREATE TRIGGER TRI_deleteINSTOCKON instockFOR deleteASBEGINDECLARE @STOREID SMALLINT,@WINEID SMALLINT,@TOTALQUANTITY INTSELECT @STOREID = d.STOREID FROM deleted dSELECT @wineid = d.wineid from deleted dSELECT @TOTALQUANTITY = SUM(QUANTITY) FROM INSTOCKWHERE STOREID =@STOREIDDELETE FROM INSTOCK WHERE storeid =@STOREID AND wineid =@WINEIDIF NOT EXISTS(SELECT storeid FROM bigstores WHERE storeid =@storeid ) BEGIN DELETE FROM bigstores where StoreId = @StoreId AND @totalquantity <= 50000 ENDEND推荐答案 这篇关于我希望触发删除触发器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
09-26 19:48