2011-11-03 35 views
1

我想寫入觸發器。當table1中有條目時,table2應該插入相同的值。並且在table1中的某個字段中更新,那麼相應的字段必須在table2中更新。我怎樣才能知道價值是插入還是更新?如何編寫觸發器來插入和更新另一個表格

我正在使用插入插入值。

請指引我。

回答

0

這裏是你怎麼會知道的值是否插入或觸發更新這樣的:

  • INSERT,在inserted動態表中填充了新的價值觀
  • UPDATE,在inserted動態表填入更新的記錄的新值,並且deleted動態表利用更新的記錄的舊值進行統計

因此,基本上,如果deleted表包含id(假設您有一個id列),如inserted表中所示,可以確定這是導致觸發的UPDATE。如果deleted表是空的,相反,它是INSERT

+0

我寫了INSERT,UPDATE之後我用插入的動態tabel是否正確? – user998533

+0

@ user998533根據我的回答,您需要在觸發器中同時使用「插入」表和「刪除」表,以真正知道觸發器是從「INSERT」還是「UPDATE」發生。合理? – 2011-11-03 01:32:50

+0

我已經寫了像插入後的表1 thiscreate觸發TestTrigger ,更新 作爲 插入到表2 SELECT * 從插入 去這裏......從插在那裏,所以我應該從插入,刪除...對寫????? – user998533

0

使用該觸發器來解決問題.. CREATE TRIGGER [DBO] [insert_Assets_Tran]
ON [DBO] [AssetMaster]
INSERT後,更新
AS BEGIN
DECLARE @isnum TINYINT。;

SELECT @isnum = COUNT(*)FROM inserted;

IF(@isnum = 1)
INSERT INTO AssetTransaction
選擇[由assetid],[名優產品],[SrNo],[Modelno],[處理器],[RAM],[HDD],[顯示器] ,[Os],[Office],[購買] ,[Expirydt],[Vendor],[VendorAMC],[Typename],[LocationName],[Empid],[CreatedBy],[CreatedOn],[ModifiedBy] ,[ModifiedOn],[Remark],[AssetStatus],[Category],[Oylstartdt],[Oylenddt],[Configuration] ,[AStatus],[Tassign]

FROM inserted;
ELSE
RAISERROR('有些字段未提供',16,1)
WITH SETERROR;
END

相關問題