Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 为数据库中的所有表创建一个触发器_Sql Server 2008_Triggers - Fatal编程技术网

Sql server 2008 为数据库中的所有表创建一个触发器

Sql server 2008 为数据库中的所有表创建一个触发器,sql-server-2008,triggers,Sql Server 2008,Triggers,我想在数据库上创建触发器,首先检查是否存在类似的触发器,如果不存在,则创建它。对于数据库中任何表上的任何插入,它将填充该表上的DateCreated和DateModified列。我当前的触发器只在一个表上执行此操作。这是我的密码: USE [Issue] GO /****** Object: Trigger [dbo].[Update_DateCreated_DateModified] Script Date: 04/11/2013 12:07:41 ******/ SET ANSI_

我想在数据库上创建触发器,首先检查是否存在类似的触发器,如果不存在,则创建它。对于数据库中任何表上的任何插入,它将填充该表上的DateCreated和DateModified列。我当前的触发器只在一个表上执行此操作。这是我的密码:

USE [Issue]
GO

/****** Object:  Trigger [dbo].[Update_DateCreated_DateModified]    Script Date: 04/11/2013 12:07:41 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:      <Author,,Nyname>
-- Create date: <Create ,10-04-13,>
-- Description: <Description,Add DateCreate and DateModifid for last records inserted,>
-- =============================================
CREATE TRIGGER [dbo].[Update_DateCreated_DateModified]
ON  [dbo].[Patient] 
FOR  INSERT
AS 
BEGIN
DECLARE @getDateCreated Datetime = GETDATE()
DECLARE @getDateModified DATETIME=GETDATE()
DECLARE @patient_nin VARCHAR(50) = (SELECT NIN FROM INSERTED i)

-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here
UPDATE dbo.Patient SET DateCreated=@getDateCreated,DateModified=@getDateModified


END

GO

你到底有什么问题?您需要为每个表创建一个触发器,以便获得表名列表,例如通过查询sys.tables,然后构建脚本。您可以在这里显示的TSQL中或在另一种语言的脚本中执行此操作。我想要的是在数据库中的所有表中循环,并创建我发布的触发器(如果它确实存在于任何表中)。从性能角度看,这似乎并不高效,但这是委托给我的任务。我想先让它发挥作用,然后试着说服我的老板这可能不是最好的方法。我真的不理解你的评论。如果您想向每个表添加一个触发器,那么您需要以某种方式在这些表上循环,因为createtrigger在一个表上为DML触发器创建一个触发器。我认为性能不应该是一个问题,因为这可能是一项一次性任务,尽管将来您可能应该将其作为开发过程的一部分,以便任何新表上都有触发器。@Pondlife我需要的是循环数据库中的所有表并创建触发器。但现在已经完成了。