用于创建和修改的MS SQL触发器

时间:2014-08-22 14:12:42

标签: sql triggers

我找到了一个创建和修改记录的触发器示例,但问题是,我应该为每个表创建这两个触发器,还是有任何方法在每次更新时运行它们并插入而不管表名是什么。当然,对于每个表,字段的名称将是唯一的,例如&#34; CreationDate&#34;,&#34; LastUpdate&#34;。实际上第一个问题应该是,为这种情况创建一个触发器是正确的做法,还是我应该在代码背后处理它?<​​/ p>

这是我在互联网上找到的触发器;

CREATE TRIGGER tr[TableName]CreateDate ON [TableName]
FOR INSERT 
AS
UPDATE [TableName] SET [TableName].Created=getdate()
FROM [TableName] INNER JOIN Inserted ON [TableName].[UniqueID]= Inserted.[UniqueID]

GO

CREATE TRIGGER tr[TableName]LastModifiedDate ON [TableName]
FOR UPDATE 
AS
UPDATE [TableName] SET [TableName].LastModified=getdate()
FROM [TableName] INNER JOIN Inserted ON [TableName].[UniqueID]= Inserted.[UniqueID]

2 个答案:

答案 0 :(得分:1)

只需为触发器提供运行INSERT AND UPDATE

的选项即可
CREATE TRIGGER [dbo].[tr_TableName] ON [dbo].[TableName] FOR INSERT,DELETE,UPDATE AS

BEGIN

    /*
     Do stuff here.
    */
    Select * from Inserted

    Select * from deleted
END

答案 1 :(得分:1)

可以在DML(表,视图事件)或DDL(创建,更改,删除等)上创建触发器。您无法创建适用于所有表的通用触发器,您需要指定表名。

如果需要,您可以创建一个脚本,自动为所有表创建触发器脚本。

有关详情:http://msdn.microsoft.com/en-us/library/ms189799.aspx