在Sql server数据库中,关于触发器的创建、调用及删除
2023-09-27 14:25:26 时间
触发器是当发生某个事件后自动的调用执行的特殊存储过程。
Sql server中的3类触发器
Insert:向数据表插入数据时,调用insert触发器。
Update:更新数据时调用update触发器。
Delete:删除数据时执行Delete触发器。
Sql server中这三类触发器总是在执行操作语句后才被自动调用。
三个虚拟表
Inserted表在执行插入语句时临时缓存数据值,通过触发器的判断之后才正式插入成功。
Updated表在更新数据是临时缓存数据值,功能同上。
Deleted表在删除数据是临时缓存数据值,功能同上。
Sql server中创建和使用触发器语法
Create trigger trigger_name----创建名称 On {table|view}----定义在表或者视图上 [with encryption]----加密元数据 { { {for|after|instead of}{[insert][,][update][,][delete]}触发器执行的条件 [with append] [ont for replication] As----触发器要执行的操作 [ {if update(column)----判断执行的是什么操作 [{and|or}update(column)][,…n] |if(columns_updated(){bitwise_operator}updated_bitmask)----判断是否插入跟新了数据 {comparison_operator}column[,…n] }] Sql_statement[,…n]操作语句 } }
for|after|instead of:for用于执行SQL语句时触发,after用于执行所有SQL语句后触发,instead of用于执行SQL语句前触发,替代执行SQL语句。
columns_updated():用以和后面updated_bitmask参数指定的字段进行位操作判断数据的插入和更新。
bitwise_operator:位操作符&,第1个字段为1,第2个字段为10,第2、3个字段为110,一次类推。
有以上语法可以看出触发器是基于表或者视图的,和存储过程的区别是:存储过程不依赖表或者视图,表的删除对存储过程不影响,而触发器会随着表或者视图的删除被删除。
使用insert触发器
举例:在向score表插入数据时,要求‘学号’字段必须在student表中存在,‘课号’必须在course表中存在。
create trigger trigger_insert on score for insert as declare @xuehao int,@kehao int select @xuehao=学号,@kehao=课号 from inserted if @xuehao not in(select 学号 from student) begin rollback transaction print'学生表中不存在的学号,取消插入数据' end if @kehao not in(select 课号 from course) begin rollback transaction print'成绩表中不存在的课号,取消插入数据' end
相关文章
- 【数据库开发】is not allowed to connect to this MySQL server解决办法
- Confluence 6 SQL Server 创建一个数据库和数据库用户
- 在 SQL Server 数据库的 WHERE 语句中使用子查询
- MySQL连接数据库报时区错误:java.sql.SQLException: The server time zone value
- 将SQL Server中的数据库导入到PowerDesigner
- 使用SQL-Server分区表功能提高数据库的读写性能
- SQL Server in Docker - 还原数据库
- sql server如何判断数据库是否存在
- sql server 数据库收缩
- 使用Red Gate Sql Compare 数据库同步工具进行SQL Server的两个数据库的结构比较、同步
- Dynamics CRM Microsoft SQL Server 指定的数据库具有更高的版本
- 干货 | 京东云数据库RDS SQL Server高可用概述
- 【数据库运维】数据库(server)的时区设置及世界主要地区的时区
- 我们采访了阿里云云数据库SQL Server的产品经理,他说了解这四个问题就可以了
- 【数据库】SQL Server VM 常见的CPU 设定问题
- 【数据库】还原SQL Server 数据库常见的问题
- Sql Server数据库自增长字段标识列的插入或更新修改操作办法
- [SQL Server 2014] 微软将于年底发布新版数据库SQL Server 2014
- idea链接数据库报错:Server returns invalid timezone. Need to set ‘serverTimezone‘ property.
- 连接及关闭数据库时区错误提示:The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one