the*_*mhz 2 sql-server sql-server-2008
在SQL SERVER 2008中的数据库中创建表时,是否有办法运行某些函数,如触发器?
是的,它被称为DDL触发器.该文档CREATE TRIGGER有一个示例DROP_SYNONYM(一个例子的一个非常可疑的选择),但你会想要CREATE_TABLE事件.理解它们如何工作的一个更好的起点可能在这里:
http://msdn.microsoft.com/en-us/library/ms190989.aspx
如果你有更具体的细节,例如你想要传递给这个函数的确切内容(我假设你的意思是程序),或者程序做了什么,我们可以提供更多有用和具体的帮助.
小智 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6185 次 |
| 最近记录: |