sql server触发器
来源:互联网 发布:下载蓝牙软件 编辑:程序博客网 时间:2024/06/05 21:00
米老师说:不怕不知道,就怕不知道。现在看来我觉得这句话是对于学习知识的态度最精确的定位,举个例子,之前在学习触发器的时候,我了解的也仅仅就是一些概念的东西,我看过之前自己的总结,自己总结的特别简单只有一句话:如果想在表中自动执行插入或删除数据就可以使用触发器。也仅仅是因为我知道数据库中的触发器,现在在做机房收费系统的时候用到它了,通过查资料,更深入的学习,从而收获了更多的知识。
下面好好的总结一下触发器:
触发器的简介:
触发器(trigger)是sql server保证数据完整性的一种方法,它使与事件相关的存储过程,它由事件来触发,比如对表进行insert操作时就能激活它。触发器被用于加强数据的完整性约束和业务逻辑。
触发器的分类:
1.DML触发器
用于数据表中的数据发生变化时,约束只能约束同一表中的数据,而触发器可以执行任意的sql命令。
//DML触发器CREATE TRIGGER [ schema_name . ]trigger_name ON { table | view } [ WITH <dml_trigger_option> [ ,...n ] ]{ FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > } <dml_trigger_option> ::= [ ENCRYPTION ] [ EXECUTE AS Clause ]<method_specifier> ::= assembly_name.class_name.method_name
参数说明:
参数名
说明
Schema_name
DML 触发器所属架构的名称
Trigger_name
触发器的名称
Table/view
执行DML触发器的表或视图
FOR/AFTER
触发器在触发sql语句中指定的所有操作都成功执行后才能执行
INSTEAD OF
执行DML触发器而不是执行触发SQL语句
{ [DELETE] [,] [INSERT] [,] [UPDATE] }
指定数据修改语句,这些语句可在 DML 触发器对此表或视图进行尝试时激活该触发器
WITH APPEND
应该添加现有类型的其他触发器
NOT FOR PEPLICATION
复制触发器涉及的表时,不执行触发器
AS
触发器要做的动作
Sql_statement
触发器条件或操作
n
触发器中多条t_sql语句占位符。
举例:
create trigger tri_updateon studentfor updateasif update(student_id)beginraiserror('学号不能修改!',16,8)rollback tranendgo
2.DDL触发器
用于约束数据库中表、触发器、视图结构上的操作,例如数据库结构发生变化时,限制对数据库的修改。
CREATE TRIGGER trigger_name ON { ALL SERVER | DATABASE } [ WITH <ddl_trigger_option> [ ,...n ] ]{ FOR | AFTER } { event_type | event_group } [ ,...n ]AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier > [ ; ] } <ddl_trigger_option> ::= [ ENCRYPTION ] [ EXECUTE AS Clause ] <method_specifier> ::= assembly_name.class_name.method_name
参数说明:
参数名
说明
Trigger_name
触发器的名称
DATABASE
将 DDL 触发器的作用域应用于当前数据库
ALL SERVER
将 DDL 或登录触发器的作用域应用于当前服务器
FOR/AFTER
触发器在触发sql语句中指定的所有操作都成功执行后才能执行
Event_type
执行之后将导致激发 DDL 触发器的 Transact-SQL 语言事件的名称
event_group
预定义的 Transact-SQL 语言事件分组的名称
WITH APPEND
应该添加现有类型的其他触发器
NOT FOR PEPLICATION
复制触发器涉及的表时,不执行触发器
AS
触发器要做的动作
Sql_statement
触发器条件或操作
n
触发器中多条t_sql语句占位符。
举例:
CREATE TRIGGER safety ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS PRINT 'You must disable Trigger "safety" to drop or alter tables!' ROLLBACK;
3.登录触发器
登录触发器将为响应 LOGON 事件而激发存储过程。与 SQL Server 实例建立用户会话时将引发此事件。登录触发器将在登录的身份验证阶段完成之后且用户会话实际建立之前激发。
//登录触发器CREATE TRIGGER trigger_name ON ALL SERVER [ WITH <logon_trigger_option> [ ,...n ] ]{ FOR| AFTER } LOGON AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier > [ ; ] }<logon_trigger_option> ::= [ ENCRYPTION ] [ EXECUTE AS Clause ] <method_specifier> ::=assembly_name.class_name.method_name
这就是触发器学习的总结,从一开始的了解知道,到现在能更加深入的去学习运用,在这个整个过程中,让我收获了更多,提高了更多。这也印证了:变是永远不变的!!举例:
CREATE TRIGGER connection_limit_triggerON ALL SERVER WITH EXECUTE AS 'login_test'FOR LOGONASBEGINIF ORIGINAL_LOGIN()= 'login_test' AND (SELECT COUNT(*) FROM sys.dm_exec_sessions WHERE is_user_process = 1 AND original_login_name = 'login_test') > 3 ROLLBACK;END;
- 【sql server】SQL触发器
- SQL-SERVER触发器
- SQL Server触发器
- Ms SQL Server 触发器
- sql server:触发器
- sql server 触发器
- SQL Server创建触发器
- SQL Server触发器
- SQL Server创建触发器
- SQL Server创建触发器
- Sql Server 触发器(二)
- sql-server 简单触发器
- SQL SERVER 触发器-实例
- SQL Server中的触发器
- SQL Server 触发器
- SQL Server触发器
- SQL Server 触发器
- SQL SERVER触发器实现
- SQLServer 2008 阻止保存要求重新创建表的更改
- 方法重载和方法重写
- 新建Maven项目
- 总结:我的2013,我的C++
- linux(ubuntu12.04)安装Twisted、Scrapy爬虫框架
- sql server触发器
- 数据库的内联,外联查询
- phpcms v9导航栏子栏目调用方法
- 无法访问网站,IIS重启无效,一定要重启服务器才正常? Connections_Refused引起的
- Spring+Spring Security+Maven 实现的一个Hello World例子
- 一般巡检的操作
- Android中的forceStopPackage—应用中关闭其他应用程序
- BindException、ConnectException和SocketException
- 全面拥抱 Qt 4.6 + 让Qt应用程序支持换肤(Skin)功能