【发布时间】:2018-10-02 19:18:46
【问题描述】:
create procedure UpdateIte(@iID int,@qtt int)
as begin
insert into updateItem
values(@iID,@qtt,getdate())
end
和
create procedure releseItem(@eid int,@qty int,@itemId int)
AS BEGIN
declare @no int,@qt int
select @no=qty
from Stock
where itemID=@itemID
if(@no>@qty)
BEGIN
update Stock
set qty=qty-@qty
where itemID=@itemID
select @qt=qty
from Stock
where itemID=@itemID
insert into release
values(@eid,@itemId,@qty,getdate())
if(@qt<=10)
BEGIN
print'Item needs to replace'
END
else
print'Success'
END
else
BEGIN
print'Not Enough items in stock'
END
END
我想在发布使用员工 ID 更新发布表的项目时创建触发器。当我创建触发器时,它会同时触发两个程序。但我希望它通过 releaseItem 触发。我该怎么做?
创建触发器 CheckQty 有货 更新 一开始 声明@qty int、@emp int、@q int、@ItemId int
select @qty= qty, @emp=eid, @ItemId=ItemId
from inserted
select @q=qty
from Stock
where ItemId=@ItemId
if(@qty>0)
begin
insert into releseItem
values (@eid,@ItemId,@qty)
end
else
rollback transaction
end
【问题讨论】:
-
你能发布触发代码吗?
-
打印?你确定这是mysql而不是sql server?
-
您是否在询问是否可以禁用代码块中的触发器?如果是这样你可能对这个docs.microsoft.com/en-us/sql/t-sql/statements/…(假设是sql server)感兴趣
-
由于您已经在使用 SP - 在特定 SP 中做所有您需要的事情,根本不要创建触发器。
-
非常感谢
标签: sql sql-server