如何编写触发器来插入和更新另一个表

时间:2011-11-03 01:08:38

标签: sql-server-2005

我想写触发器。当table1中有一个条目时,table2应插入相同的值。并且在table1中的某些字段中进行更新,然后必须在table2中更新相应的字段。如何知道是否插入或更新了值?

我使用插入来插入值。

请指导我。

2 个答案:

答案 0 :(得分:0)

以下是如何知道在这样的触发器中插入或更新值的方法:

  • INSERT上,inserted动态表格中填入了新值
  • UPDATE上,inserted动态表填充了已更新记录的新值,deleted动态表包含了记录的旧值。已更新

所以基本上,如果deleted表包含id(假设你有一个id列),就像在inserted表中一样,你可以确信它是UPDATE导致的deleted触发。如果INSERT表为空,则相反,它是{{1}}。

答案 1 :(得分:0)

使用此触发器来解决您的问题.. 创建TRIGGER [dbo]。[insert_Assets_Tran]
 ON [dbo]。[AssetMaster]
插入后,更新
作为开始的   DECLARE @isnum TINYINT;

SELECT @isnum = COUNT(*)FROM inserted;

IF(@isnum = 1)
    插入AssetTransaction
    选择[AssetId],[Brandname],[SrNo],[Modelno],[Processor],[Ram],[Hdd],[Display],[Os],[Office],[Purchasedt]       [Expirydt],[供应商],[VendorAMC],[类型名],[LOCATIONNAME],[EMPID],[CreatedBy],[CreatedOn],[ModifiedBy]       [ModifiedOn],[备注],[AssetStatus],[类别],[Oylstartdt],[Oylenddt],[配置]       [AStatus],[Tassign]

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