SQL数据库触发器
来源:互联网 发布:vb语言n的数值 编辑:程序博客网 时间:2024/06/06 08:31
触发器的概念
触发器是一种特殊的存储过程,它被分配给某个特定的表。当对这个表进行插入、更新或删除操作时,自动调用触发器执行触发器里规定的操作.
触发器是确保数据完整性和一致性的基本有效的方法。
和表相关联,可以看作是表的一部分;
不能直接引用,通过insert/update/delete自动激活;
属于事务机制;
同一类型的触发器在表上可以有多个
触发器的特点
不接受用户参数,也不返回用户参数;
事件驱动,自动调用;存储在表上。
对数据库中的相关表进行级联更新和删除
强制比Check约束更复杂的数据完整性。
可以引用其他表中的列
触发器的种类
插入型触发器
删除型触发器
更新型触发器
一个表上可以定义多种类型的触发器
触发器的工作原理
SQL Server创建了两个专用表:inserted表和deleted表。这是两个逻辑表,由系统来维护,不允许用户直接对这两个表进行修改。它们存放于内存中,不存放在数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。
触发器的工作方式
执行触发器时,系统创建了两个特殊的逻辑表:
inserted和deleted表,不允许用户直接对它们进行
修改。它们存放在内存中,不存放在数据库中。
当向表中插入数据时,insert触发器触发执行,新的记录插入到触发器表和inserted表中。
当触发一个delete触发器时,被删除的表记录存放到deleted表中。
创建插入型触发器
--在users表中定义触发器,当插入纪录时弹出消息:你已经向users表里插入了一条纪录!
创建delete触发器
--在users表中定义触发器,当删除纪录时弹出消息:你已经向users表里删除了一条纪录!
如果在xs表中更新数据,则在执行时显示提示信息。
修改、删除触发器
修改语法:
删除语法:
禁用、启用触发器
禁用语法:
启用语法:
Alter table 表名
enable trigger 触发器名
使用触发器时应考虑的因素
首先检查约束。如果在触发器表上存在约束,则约束在 触发器执行前检查。如果违反约束,触发器就不执行。
对任何动作都可以有多个触发器。允许在一个表上嵌套几个触发器。一个表可以定义多个触发器。每个触发器可以为一个或几个动作定义。
触发器是一种特殊的存储过程,它被分配给某个特定的表。当对这个表进行插入、更新或删除操作时,自动调用触发器执行触发器里规定的操作.
触发器是确保数据完整性和一致性的基本有效的方法。
和表相关联,可以看作是表的一部分;
不能直接引用,通过insert/update/delete自动激活;
属于事务机制;
同一类型的触发器在表上可以有多个
触发器的特点
不接受用户参数,也不返回用户参数;
事件驱动,自动调用;存储在表上。
对数据库中的相关表进行级联更新和删除
强制比Check约束更复杂的数据完整性。
可以引用其他表中的列
触发器的种类
插入型触发器
删除型触发器
更新型触发器
一个表上可以定义多种类型的触发器
触发器的工作原理
SQL Server创建了两个专用表:inserted表和deleted表。这是两个逻辑表,由系统来维护,不允许用户直接对这两个表进行修改。它们存放于内存中,不存放在数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。
触发器的工作方式
执行触发器时,系统创建了两个特殊的逻辑表:
inserted和deleted表,不允许用户直接对它们进行
修改。它们存放在内存中,不存放在数据库中。
当向表中插入数据时,insert触发器触发执行,新的记录插入到触发器表和inserted表中。
当触发一个delete触发器时,被删除的表记录存放到deleted表中。
修改一条记录等于插入一条新记录,同时删除旧记录,表中原始记录放在deleted中,修改过的记录插入到inserted表中。
创建触发器
语法:create trigger 触发器名 on 表名 for delete /insert /update as 触发器要执行的操作
创建插入型触发器
--在users表中定义触发器,当插入纪录时弹出消息:你已经向users表里插入了一条纪录!
create trigger t_userson usersfor insert as print '已向users表里插入了一条记录'Go
创建delete触发器
--在users表中定义触发器,当删除纪录时弹出消息:你已经向users表里删除了一条纪录!
create trigger t_userson usersfor insert as print '已向users表里插入了一条记录'Go创建update触发器
如果在xs表中更新数据,则在执行时显示提示信息。
create trigger tr_update on users for update as print ‘你已经更新了此数据!’ go
修改、删除触发器
修改语法:
alter trigger 触发器名 on 表名 for delete /insert /update as 触发器要执行的操作
删除语法:
drop trigger 触发器名
禁用、启用触发器
禁用语法:
Alter table 表名 disable trigger 触发器名
启用语法:
Alter table 表名
enable trigger 触发器名
使用触发器时应考虑的因素
首先检查约束。如果在触发器表上存在约束,则约束在 触发器执行前检查。如果违反约束,触发器就不执行。
对任何动作都可以有多个触发器。允许在一个表上嵌套几个触发器。一个表可以定义多个触发器。每个触发器可以为一个或几个动作定义。
阅读全文
1 0
- SQL--数据库触发器
- SQL--数据库触发器
- sql数据库中触发器
- 触发器-----------数据库(SQL)
- SQL数据库触发器
- T-SQL数据库 建立触发器
- 数据库插入触发器 sql->oracle
- sql server 数据库之触发器
- Sql Server数据库触发器实例讲解
- Sql Server数据库触发器实例讲解
- SQL Server数据库中使用触发器经验
- 讲解SQL Server数据库的触发器安全隐患
- sql数据库级触发器的应用
- 讲解SQL Server数据库触发器的安全隐患
- Sql Server数据库触发器实例讲解
- 简单的sql数据库触发器实例
- SQL数据库中查询所有触发器
- 浅谈SQL Server 数据库之触发器
- magento开发--入门深入理解第一章
- springboot使用Spring Security+OAuth2做权限控制
- Java中为什么要序列化和序列化的几种方式
- Linux-启动和服务(service)
- Mysql账户创建及删除
- SQL数据库触发器
- MySQL 学习教程(五)【整理】-索引/ 关系/ 范式
- Qt 调用第三方应用程序
- [整理] 解决 Coursera 视频无法播放
- Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled
- magento 实现折扣为负值
- 虚幻引擎四 调用HTC Vive 手柄震动问题 ||UE4 调用手柄震动问题
- dede:sql
- python时间概念总结