当在 SQL SERVER 2008 的数据库中创建表时,有没有办法运行触发器之类的函数?
问问题
6873 次
2 回答
6
是的,它被称为 DDL 触发器。的文档CREATE TRIGGER
有一个示例DROP_SYNONYM
(示例的一个非常有问题的选择),但您会想要该CREATE_TABLE
事件。了解它们如何工作的更好起点可能在这里:
http://msdn.microsoft.com/en-us/library/ms190989.aspx
如果你有更具体的细节,例如你想传递给这个函数的具体内容(我假设你的意思是过程),或者过程做什么,我们可以提供更有用和具体的帮助。
于 2012-05-02T16:33:00.737 回答
5
是的,一个 DDL 触发器。例如,这是我为防止某些表被修改而编写的一些代码:
PRINT N'Create DDL trigger to prevent changes to various tables'
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER NoEditCertainTables ON DATABASE
FOR DROP_TABLE, ALTER_TABLE, CREATE_TABLE
AS
SET CONCAT_NULL_YIELDS_NULL ON
DECLARE @AffectedTable varchar(255)
SELECT @AffectedTable = EVENTDATA().value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(100)')
--This is the name of the table(s) you dont want messed with
IF (@AffectedTable IN ('Table1','Table2','Table3'))
BEGIN
ROLLBACK;
END
SET CONCAT_NULL_YIELDS_NULL OFF
GO
于 2012-05-02T20:43:47.370 回答