Sql Server触发器的使用
当对表进行操作时,Sql Server为每个触发器创建了两个重要的逻辑表——Inserted表和Deleted表。这两个表并非存在于数据库中,而是在内存中由系统维护。它们的结构总是与被触发器的表保持一致。当触发器执行完成后,这两个表也会被自动删除。
对于不同类型的操作,Inserted表和Deleted表的行为也有所不同:
1. 增加记录(insert):
- 新增的记录在Inserted表中存放。
- Deleted表中无任何变化。
2. 删除记录(delete):
- 无记录在Inserted表中存放。
- 被删除的记录在Deleted表中存放。
3. 修改记录(update):
- 更新后的记录在Inserted表中存放。
- 更新前的记录在Deleted表中存放。
除了上述基本的触发器行为,还有三种类型的触发器:for、after和instead of触发器。
After触发器在触发它们的语句完成后执行。如果触发语句因错误而失败,触发器将不会被执行。这种触发器只能应用于表,不能应用于视图。可以为每个触发操作(insert、update、delete)指定多个after触发器。触发顺序可以通过sp_settriggerorder进行定义和控制。
For触发器与after触发器的行为相同。
这些触发器机制为数据库提供了强大的数据完整性保障,确保数据的准确性、一致性和安全性。四、触发器的应用与操作
在数据库管理中,触发器是一种特殊的存储过程,它自动执行或响应某个特定的事件。以下是关于触发器的使用说明。
1. 创建触发器
创建触发器是数据库管理中的重要步骤。触发器的语法大致如下:
```sql
CREATE TRIGGER trigger_name
ON {table_name | view_name}
{FOR | AFTER | INSTEAD OF}
[INSERT, UPDATE, DELETE]
AS
sql_statement
```
2. 删除触发器
如果需要删除某个不再需要的触发器,可以使用以下语句:
```sql
DROP TRIGGER trigger_name
```
替换`trigger_name`为你要删除的触发器的名称。
3. 查看数据库中的触发器
要查看数据库中所有已创建的触发器,可以执行以下查询:
```sql
SELECT FROM sysobjects WHERE xtype='TR'
```
4. 查看单个触发器
要查看特定触发器的详细信息,可以使用以下语句:
```sql
EXEC sp_helptext '触发器名'
```
替换`触发器名`为你要查看的触发器的名称。
5. 修改触发器
如果需要修改已存在的触发器,可以使用ALTER TRIGGER语句。语法与创建触发器的语句类似,只需替换相应的部分即可。
五、触发器的实际应用案例
检查是否存在名为`tgr_orders_insert`的触发器,如果存在则删除:
```sql
IF OBJECT_ID('tgr_orders_insert', 'TR') IS NOT NULL
DROP TRIGGER [tgr_orders_insert];
GO
``` 接着,创建新的触发器:
编程语言
- Sql Server触发器的使用
- sqlserver 存储过程分页(按多条件排序)
- php中配置文件保存修改操作 如config.php文件的读取
- JS获取月的第几周和年的第几周实例代码
- input submit、button和回车键提交数据详解
- vue-cli开发时,关于ajax跨域的解决方法(推荐)
- php封装的单文件(图片)上传类完整实例
- Angular-UI Bootstrap组件实现警报功能
- JS数组去重常用方法实例小结【4种方法】
- 2004年十大网络安全漏洞
- Vue声明式渲染详解
- AngularJS ng-change 指令的详解及简单实例
- asp.net常用正则表达式
- ThinkPHP调试模式与日志记录概述
- Mint-UI时间组件起始时间问题及时间插件使用
- TableSort.js表格排序插件使用方法详解