mysql 触发器的使用 FOR INSERT,DELETE,UPDATE
来源:互联网 发布:怎么投资知乎 编辑:程序博客网 时间:2024/05/01 06:12
触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。
Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。
Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。
1.插入操作(Insert)
Inserted表有数据,Deleted表无数据
2.删除操作(Delete)
Inserted表无数据,Deleted表有数据
3.更新操作(Update)
Inserted表有数据(新数据),Deleted表有数据(旧数据)
inserted、deleted
这是两个虚拟表,inserted 保存的是 insert 或 update 之后所影响的记录形成的表,deleted 保存的是 delete 或 update 之前所影响的记录形成的表。
if not exists(select 1 from deleted)
begin /*deleted表无记录,是新增*/
end
if not exists(select 1 from inserted)
begin /*inserted表无记录,是删除*/
end
create trigger Add_Del_Update on Table
for insert,update
as
if not exists(select 1 from deleted)
begin /*deleted表无记录,是新增*/
end
if not exists(select 1 from inserted)
begin /*inserted表无记录,是删除*/
end
else
begin /*是更新*/ end
go
eg:
create trigger Add_Del_Update on tab1
for insert,update,delete
as
if not exists(select 1 from deleted)
begin /*deleted表无记录,是新增*/
insert into tab2(dp,st)
select dp,st from inserted
end
if not exists(select 1 from inserted)
begin /*inserted表无记录,是删除*/
delete from tab2 where id in(select id from deleted)
end
else
begin /*是更新*/
update tab2 set tab2.dp=inserted.dp,tab2.st=inserted.st
from tab2,inserted where tab2.id=inserted.id
end
触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。
Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。
Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。
1.插入操作(Insert)
Inserted表有数据,Deleted表无数据
2.删除操作(Delete)
Inserted表无数据,Deleted表有数据
3.更新操作(Update)
Inserted表有数据(新数据),Deleted表有数据(旧数据)
inserted、deleted
这是两个虚拟表,inserted 保存的是 insert 或 update 之后所影响的记录形成的表,deleted 保存的是 delete 或 update 之前所影响的记录形成的表。
if not exists(select 1 from deleted)
begin /*deleted表无记录,是新增*/
end
if not exists(select 1 from inserted)
begin /*inserted表无记录,是删除*/
end
create trigger Add_Del_Update on Table
for insert,update
as
if not exists(select 1 from deleted)
begin /*deleted表无记录,是新增*/
end
if not exists(select 1 from inserted)
begin /*inserted表无记录,是删除*/
end
else
begin /*是更新*/ end
go
eg:
create trigger Add_Del_Update on tab1
for insert,update,delete
as
if not exists(select 1 from deleted)
begin /*deleted表无记录,是新增*/
insert into tab2(dp,st)
select dp,st from inserted
end
if not exists(select 1 from inserted)
begin /*inserted表无记录,是删除*/
delete from tab2 where id in(select id from deleted)
end
else
begin /*是更新*/
update tab2 set tab2.dp=inserted.dp,tab2.st=inserted.st
from tab2,inserted where tab2.id=inserted.id
end
触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。
Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。
Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。
1.插入操作(Insert)
Inserted表有数据,Deleted表无数据
2.删除操作(Delete)
Inserted表无数据,Deleted表有数据
3.更新操作(Update)
Inserted表有数据(新数据),Deleted表有数据(旧数据)
inserted、deleted
这是两个虚拟表,inserted 保存的是 insert 或 update 之后所影响的记录形成的表,deleted 保存的是 delete 或 update 之前所影响的记录形成的表。
if not exists(select 1 from deleted)
begin /*deleted表无记录,是新增*/
end
if not exists(select 1 from inserted)
begin /*inserted表无记录,是删除*/
end
create trigger Add_Del_Update on Table
for insert,update
as
if not exists(select 1 from deleted)
begin /*deleted表无记录,是新增*/
end
if not exists(select 1 from inserted)
begin /*inserted表无记录,是删除*/
end
else
begin /*是更新*/ end
go
eg:
create trigger Add_Del_Update on tab1
for insert,update,delete
as
if not exists(select 1 from deleted)
begin /*deleted表无记录,是新增*/
insert into tab2(dp,st)
select dp,st from inserted
end
if not exists(select 1 from inserted)
begin /*inserted表无记录,是删除*/
delete from tab2 where id in(select id from deleted)
end
else
begin /*是更新*/
update tab2 set tab2.dp=inserted.dp,tab2.st=inserted.st
from tab2,inserted where tab2.id=inserted.id
end
注:此博客是转载的文字,非自己的作品,感觉很好就抄袭了,只是希望大家一起学习进步,
- mysql 触发器的使用 FOR INSERT,DELETE,UPDATE
- Insert , Update , Delete 触发器
- SQL 表的Insert ,update ,delete 触发器
- 触发器 判断insert , update ,delete 的方法
- 关于mysql中insert、update、delete的触发器(跨库操作)
- 操作Ms Sql触发器的insert,update,delete
- 操作Ms Sql触发器的insert,update,delete
- 一个触发器内三种INSERT,UPDATE,DELETE状态
- 创建INSERT、DELETE、UPDATE 触发器示例
- 单个触发器判断Insert/Delete/Update操
- sql触发器(insert,update,delete)
- sql触发器(insert,update,delete…
- 一个触发器内三种INSERT,UPDATE,DELETE状态
- 创建INSERT、DELETE、UPDATE 触发器示例 .
- sql触发器(insert,update,delete)
- SQL触发器编程(insert/update/delete)
- mysql insert与update触发器
- MySQL中的触发器insert、update
- Eclipse的java代码出错:The import org.apache cannot be resolved
- Java 条件表达式结果类型不一致问题
- 一次简单的接口编程,使用socket通信
- html5的移动开发详解
- struts自动赋值
- mysql 触发器的使用 FOR INSERT,DELETE,UPDATE
- C#前后台线程
- Binary Tree Level Order Traversal
- Caused by: java.lang.Error: Unresolved compilation problems:
- 【Unity3D游戏开发】之多语言缩写对应表 (十五)
- The Factor-----(BestCoder Round #54 (div.2))
- Hibernate – Many-to-Many example (XML Mapping)
- SQL详解
- Android基础之CursorAdapter 的用法与获取联系人信息显示、并点击拨号