溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

sql中觸發(fā)器如何實(shí)現(xiàn)庫(kù)存功能

發(fā)布時(shí)間:2022-01-15 09:30:17 來(lái)源:億速云 閱讀:670 作者:小新 欄目:數(shù)據(jù)庫(kù)

這篇文章主要為大家展示了“sql中觸發(fā)器如何實(shí)現(xiàn)庫(kù)存功能”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“sql中觸發(fā)器如何實(shí)現(xiàn)庫(kù)存功能”這篇文章吧。

表1、入庫(kù)表      
  列:入庫(kù)單號(hào)   零件號(hào)    入庫(kù)數(shù)量  
表2、出庫(kù)表      
  列:出庫(kù)單號(hào)   零件號(hào)    出庫(kù)數(shù)量   
表3:零件信息表
  列:零件號(hào)`````` 庫(kù)存數(shù)量  
我想實(shí)現(xiàn)每一次的入庫(kù)時(shí),"零件信息表"里的"庫(kù)存數(shù)量"要加上"入庫(kù)數(shù)量",出庫(kù)時(shí),”庫(kù)存數(shù)量“要減去”出庫(kù)數(shù)量“,就是實(shí)現(xiàn)更新庫(kù)存應(yīng)該怎么做?寫觸發(fā)器嗎,觸發(fā)器該怎么寫?還是有什么更好的方法,請(qǐng)高手幫助我,最好有詳細(xì)代碼,謝謝!

最佳答案

一般來(lái)說(shuō)庫(kù)存操作單據(jù)和庫(kù)存結(jié)余的聯(lián)系都是通過(guò)客戶端軟件實(shí)現(xiàn)的,就是在入庫(kù)單的審核操作按鈕處加入SQL代碼,如果你的不是這樣,也可以通過(guò)觸發(fā)器來(lái)實(shí)現(xiàn),但是完善的流程應(yīng)該包括在插入、修改和刪除時(shí)都保證對(duì)零件信息表的更改。

1、CREATE TRIGGER Tr_入庫(kù)表 ON 入庫(kù)表
after insert,update,delete
AS
begin
  update a set a.庫(kù)存數(shù)量=a.庫(kù)存數(shù)量 +b.入庫(kù)數(shù)量
  from  零件信息表 a,(select 零件號(hào),sum(入庫(kù)數(shù)量) 入庫(kù)數(shù)量 from inserted group by 零件號(hào) ) b  --如果每次插入時(shí)零件號(hào)不重復(fù),則不必聚合
  where a.零件號(hào) =b.零件號(hào);
  go
  update a set a.庫(kù)存數(shù)量=a.庫(kù)存數(shù)量 -b.入庫(kù)數(shù)量
  from  零件信息表 a,(select 零件號(hào),sum(入庫(kù)數(shù)量) 入庫(kù)數(shù)量 from deleted group by 零件號(hào) ) b  --如果每次插入時(shí)零件號(hào)不重復(fù),則不必聚合
  where a.零件號(hào) =b.零件號(hào);
  go
end

2、CREATE TRIGGER Tr_出庫(kù)表 ON 出庫(kù)表
after insert,update,delete
AS
begin
  update a set a.庫(kù)存數(shù)量=a.庫(kù)存數(shù)量 -b.出庫(kù)數(shù)量
  from  零件信息表 a,(select 零件號(hào),sum(出庫(kù)數(shù)量) 出庫(kù)數(shù)量 from inserted group by 零件號(hào) ) b  --如果每次插入時(shí)零件號(hào)不重復(fù),則不必聚合
  where a.零件號(hào) =b.零件號(hào);
  go
  update a set a.庫(kù)存數(shù)量=a.庫(kù)存數(shù)量 +b.出庫(kù)數(shù)量
  from  零件信息表 a,(select 零件號(hào),sum(出庫(kù)數(shù)量) 出庫(kù)數(shù)量 from deleted group by 零件號(hào) ) b  --如果每次插入時(shí)零件號(hào)不重復(fù),則不必聚合
  where a.零件號(hào) =b.零件號(hào);
  go
end

以上是“sql中觸發(fā)器如何實(shí)現(xiàn)庫(kù)存功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

sql
AI