gpt4 book ai didi

mysql - MS SQL Server 和 MySQL : Trigger when inserted update (increase)

转载 作者:行者123 更新时间:2023-11-29 12:55:41 25 4
gpt4 key购买 nike

我有药店数据库

2 个表:

Drug :DID , DNumder(is Drug inventory)
Buy_Drug:BID(Autoincrement) , DID , Bnumber(is number of Purchase)

我想要一个触发器:当插入 Buy_Drug 示例 Bnumber=10 时更新药物增加 Dnumber=Dnumber+10

示例:

Buy_Drug:                           Drug:
BID DID Bnumber DID Dnumber
1 123 44 111 10
2 111 10 199 0

插入Buy_drug时 BID=3 DID=123 Bnumber=40更新药品:DID=123 Dnumber=44+40=88

在我的触发器中*Dnumber=44+44=88 插入第一条记录的平均更新太糟糕了,我的触发器起作用了

我的触发器*:

create trigger drug_buy
on Buy_Drug
After Insert
as
begin
Update Drug
Set Dnumber=Dnumber+Bnumber
From Drug JOIN Bying_Drug
on Drug.DID=Bying_Drug.DID
end

请帮我写一个有效的触发器?

最佳答案

假设SqlServer,您需要使用inserted(可能还有deleted)伪表来执行此操作。当然还要注意,Buy_Drug 的 DML(更新、插入等)可以包含多行更新!:

create trigger drug_buy
on Buy_Drug
After Insert
as
begin
Update Drug
Set Dnumber=Dnumber + i.Bnumber
From Drug JOIN INSERTED i
on Drug.DID=i.DID
end

但是,也就是说,在触发器中完成这项工作并不是一个好主意,例如由于它不是并发安全的,即 2 个同时插入可能会导致库存计数错误。您还需要向下计数的机制,例如退款。在最好的情况下,触发更新的库存水平只是指示性的,定期重新计算所有数据需要更准确地重新确定库存水平。

关于mysql - MS SQL Server 和 MySQL : Trigger when inserted update (increase),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24083738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com