欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sql server 触发器详解

程序员文章站 2022-05-09 09:25:12
...

触发器:

概念:

触发器是一个在修改制定表中的数据时执行的存储过程,它的执行不由程序调用也不是手工启动, 触发器主要通过事件进行触发而被执行

触发器和存储过程的区别:

触发器存储过程的区别是运行方式不同,存储过程需要使用EXECUTE语句调用,而触发器是在用户执行sql 语句时自动触发执行

触发器的优点:

1.触发器是自动的。当对表中的数据做了任何修改之后立即被**。
2.触发器可以通过数据库中的相关表进行层叠修改。
3.触发器可以强制限制。这些限制比用CHECK约束所定义的更复杂。

触发器的分类:

主要分为俩大类:

DML触发器 DDL触发器

DML触发器:

当数据库服务器中发生数据操作语言事件时执行这些操作。SqlServer中的DML触发器有三种:
insert触发器:向表中插入数据时被触发;
delete触发器:从表中删除数据时被触发;
update触发器:修改表中数据时被触发。

三个触发器的工作原理:sql server 触发器详解

创建 触发器 :

语法格式:
CREATE TRIGGER trigger_name 
ON[ table\view] ' 基表或者基视图
{
{{for\after\instead of }
{[delete][,][insert][,][update]
AS 
SQL_STATEMENT
}
}   

创建update 触发器:

CREATE TRIGGER t_update 
on 教师信息
for update 
as 

if(update(姓名) or (性别) ) 
begin 
print' 事务不能被处理,基础数据不能修改'
ROLLBACK TRANSACTION
end
else
pirnt'修改成功' 

update 教师信息 set 姓名=‘立方’ where 教师编号=‘32323’


最终结果: 没有被执行    

DDL触发器:

DDL触发器是当服务器或者数据库中发生数据定义语言(主要是以create,drop,alter开头的语句)事件时被**使用,
使用DDL触发器可以防止对数据架构进行的某些更改或记录数据中的更改或事件操作。

区别:

dml 触发器是针对某个表的数据进行操作的
ddl是对整个数据库进行操作的

创建DDL触发器:

语法格式:
与dml 相似

CREATE TRIGGER trigger_name
ON{ ALL SERVER \ DATABASE }
’整个服务器或者当前数据库

WITH ENCRYPTION '是否加密
{ for\ after\{ event_type} ' 触发的事件类型
as
sql_statement