数据库 字段利用数据库触发器填写 相关知识点
2009-05-15 12:53
260 查看
在触发器中,有两个特殊的逻辑表:
inserted 和 deleted
这两个表是系统自动生成的.
inserted中记录的是新增或修改后的内容
deleted中记录的是删除或修改前的内容
例如有如下表:
a
id,name
1 aa
2 bb
1.新增
执行:insert into a(id,name) values(3,'cc')
这时,在触发器中
inserted表的内容就是:
3 cc
deleted表内容为空
2.修改
执行:update a set name=name+'1' where id<3
这时,在触发器中
inserted表的内容就是:
1 aa1
2 bb1
deleted表内容为空
1 aa
2 bb
3.删除
执行:delete from a where id=2
这时,在触发器中
inserted表的内容就是空
deleted表内容为空
2 bb
所以你的触发器可以这样写:
方法1
create trigger aa on 你的表
for insert,delete,update
if exists(select * from inserted)
if exists(select * from deleted)
....... --记录操作为修改的处理语句
else
.......... --记录操作为新增的处理语句
else
......... --记录操作为删除的处理语句
方法2.分开写
create trigger aa on 你的表
for insert
as
........ --记录操作为新增的处理语句
create trigger aa on 你的表
for update
as
........ --记录操作为修改的处理语句
create trigger aa on 你的表
for delete
as
........ --记录操作为删除的处理语句
事例:
触发器实现关键字自动+1要注意:
1、触发器是在插入后运行的,之前如果主键冲突,就到不了触发器。
2、自动+1的规则,多人操作的时候不能保证生成的关键字不重复,当出现关键字重复时如何处理?
3、INSTEAD OF INSERT 触发器可以避免问题。
inserted 和 deleted
这两个表是系统自动生成的.
inserted中记录的是新增或修改后的内容
deleted中记录的是删除或修改前的内容
例如有如下表:
a
id,name
1 aa
2 bb
1.新增
执行:insert into a(id,name) values(3,'cc')
这时,在触发器中
inserted表的内容就是:
3 cc
deleted表内容为空
2.修改
执行:update a set name=name+'1' where id<3
这时,在触发器中
inserted表的内容就是:
1 aa1
2 bb1
deleted表内容为空
1 aa
2 bb
3.删除
执行:delete from a where id=2
这时,在触发器中
inserted表的内容就是空
deleted表内容为空
2 bb
所以你的触发器可以这样写:
方法1
create trigger aa on 你的表
for insert,delete,update
if exists(select * from inserted)
if exists(select * from deleted)
....... --记录操作为修改的处理语句
else
.......... --记录操作为新增的处理语句
else
......... --记录操作为删除的处理语句
方法2.分开写
create trigger aa on 你的表
for insert
as
........ --记录操作为新增的处理语句
create trigger aa on 你的表
for update
as
........ --记录操作为修改的处理语句
create trigger aa on 你的表
for delete
as
........ --记录操作为删除的处理语句
事例:
触发器实现关键字自动+1要注意:
1、触发器是在插入后运行的,之前如果主键冲突,就到不了触发器。
2、自动+1的规则,多人操作的时候不能保证生成的关键字不重复,当出现关键字重复时如何处理?
3、INSTEAD OF INSERT 触发器可以避免问题。
相关文章推荐
- Sqlserver:利用Sqlserver2005的数据库触发器开发的数据库审核追踪系统,可以跟踪对象的修改信息及修改源代码
- Sql tempdb 临时数据库相关知识点
- 触发器实现级联修改数据库中的相关表
- 【数据库7】字段相关与联合结果集
- SQL Server ->> 重新创建Assembly和自动重建相关的数据库编程对象(存储过程,函数和触发器)
- 利用Migration同步模型与数据库的字段
- 如何利用存储过程和触发器来管理数据库 (3)
- 修改数据库相关字段的默认值
- 两表比较后利用触发器发送邮件——ASA数据库
- DBChart中获得X、Y坐标值和数据库相关字段值
- 2016.10.9 Java相关的知识点(类加载机制及数据库)
- 修改mybatis-generate源码实现实体类字段上方加上数据库中填写的注释
- 连接数据库和相关数据库操作——之我的方法 利用OLEDB
- Sqlite 数据库插入标示字段 获取新Id 及利用索引优化查询
- 数据库相关知识点总结
- 利用DataSet数据集来获取数据库表的某个字段值
- PL/SQL 数据库访问的相关技术(2)游标 、异常、存储过程、函数、包、触发器
- Java获取数据库的表中各字段的字段名等相关信息-很详细
- 如何利用存储过程和触发器来管理数据库 (4)
- 获取数据库的所有用户表 以及 获取指定表的相关字段属性