2011-11-03 31 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

相关问题