DBMNG数据库管理与应用

所有存在都是独创。
当前位置:首页 > SQLServer > 应用案例

SQL Server 2005 触发器实例

SQL Server 2005 中 DDL 触发器的实现 

   在 sql server 2000 中,只能为针对表发出的 DML 语句( INSERT 、 UPDATE 和 DELETE )定义 AFTER 触发器。 SQL Server 2005 可以就整个服务器或数据库的某个范围为 DDL 事件定义触发器。可以为单个 DDL 语句(例如, CREATE_TABLE )或者为一组语句(例如, DDL_DATABASE_LEVEL_EVENTS )定义 DDL 触发器。在该触发器内部,您可以通过访问 eventdata() 函数获得与激发该触发器的事件有关的数据。该函数返回有关事件的 XML 数据。每个事件的架构都继承了 Server Events 基础架构。


介绍:

    触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。

功能:

1 、 允许 / 限制对服务、数据库、表的某些操作

2 、 自动生成派生列,比如自增字段

3 、 强制数据一致性

4 、 提供审计和日志记录

5 、 防止无效的事务处理

6 、 启用复杂的业务逻辑

 

实例

1、创建表触发器

create trigger aaa on aa
for insert
as
print ('success inserted one row')

 

CREATE TRIGGER delete_on_Table
ON  bb
FOR delete
AS
PRINT 'You are not allowed to delete TABLE'
ROLLBACK;

 

2、创建服务器触发器

CREATE TRIGGER STOP_DDL_on_Table_and_PROC
ON ALL SERVER
FOR
CREATE_DATABASE,ALTER_DATABASE,DROP_DATABASE
AS
PRINT 'You are not allowed to CREATE,ALTER and DROP any Databases'
ROLLBACK;
disable TRIGGER STOP_DDL_on_Table_and_PROC ON ALL SERVER

 

3、创建数据库触发器

CREATE TRIGGER STOP_DDL_on_Table_and_PROC
ON DATABASE
FOR
CREATE_TABLE, DROP_TABLE, ALTER_TABLE,
CREATE_PROCEDURE, ALTER_PROCEDURE,DROP_PROCEDURE
AS
SELECT EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]', 'nvarchar(max)')
PRINT 'You are not allowed to CREATE,ALTER and DROP any Tables and Procedures'
ROLLBACK;

 

disable TRIGGER STOP_DDL_on_Table_and_PROC ON DATABASE  --禁用

enable TRIGGER STOP_DDL_on_Table_and_PROC ON DATABASE  --启用

use QQ
CREATE TABLE MYTABLE2(ID INT, NAME VARCHAR(100))
select * from MYTABLE2

本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号