SQL trigger 当表格insert,delete 时触发记录历史数据
来源:互联网 发布:淘宝手机积分怎么查 编辑:程序博客网 时间:2024/06/05 18:34
--建立測試表格
CREATE
TABLE
[dbo].[WIPPrd](
[ProdNo] [
varchar
](16)
NOT
NULL
,
[PnameD] [nvarchar](100)
NULL
,
[PType] [
varchar
](4)
NULL
,
[InDay] [datetime]
NULL
,
[UsrNo] [
varchar
](10)
NULL
,
[UsrCo] [
varchar
](5)
NULL
)
ON
[
PRIMARY
]
--建立記錄檔
CREATE
TABLE
[dbo].[WIPPrd_Log](
[MState] [
varchar
] (10)
NOT
NULL
,
[ProdNo] [
varchar
](16)
NOT
NULL
,
[PnameD] [nvarchar](100)
NULL
,
[PType] [
varchar
](4)
NULL
,
[InDay] [datetime]
NULL
,
[UsrNo] [
varchar
](10)
NULL
,
[UsrCo] [
varchar
](5)
NULL
)
--建立TRIGGER-在WIPPrd表格更新、新增、刪除後觸發
CREATE
TRIGGER
dbo.TR_WIPPrd_Modify
on
dbo.WIPPrd
AFTER
UPDATE
,
INSERT
,
DELETE
AS
BEGIN
--表格異動資料時會產生暫存的inserted和deleted兩個表格
--兩個表格格式資訊皆與原表格相同
--inserted紀錄insert資料、update後資料
--deleted紀錄delete資料、update前資料
--依據異動方式將異動資料新增到記錄檔
--inserted和deleted皆有資料表示為-UPDATE
IF EXISTS (
select
1
from
inserted)
and
EXISTS (
select
1
from
deleted)
BEGIN
insert
into
WIPPrd_Log
select
'DELETE'
,*
from
deleted
insert
into
WIPPrd_Log
select
'INSERT'
,*
from
inserted
END
--inserted有資料deleted無資料表示為-INSERT
ELSE
IF EXISTS (
select
1
from
inserted)
and
Not
EXISTS (
select
1
from
deleted)
insert
into
WIPPrd_Log
select
'INSERT'
,*
from
inserted
--inserted無資料deleted有資料表示為-DELETE
ELSE
IF
NOT
EXISTS (
select
1
from
inserted)
and
EXISTS (
select
1
from
deleted)
insert
into
WIPPrd_Log
select
'DELETE'
,*
from
deleted
END
--測試
--清空資料
delete
from
WIPPrd
delete
from
WIPPrd_log
--新增資料
insert
into
WIPPrd
values
(
'11'
,
'TEST_11'
,
'11'
,GETDATE(),
'Dean'
,
'10001'
)
insert
into
WIPPrd
values
(
'22'
,
'TEST_22'
,
'22'
,GETDATE(),
'Dean'
,
'10001'
)
--更新資料
update
WIPPrd
set
ProdNo=
'33'
,PnameD=
'TEST_33'
where
ProdNo=
'22'
--刪除資料
delete
from
WIPPrd
--查詢記錄檔
select
*
from
WIPPrd_log
------------------------------------------------------------
INSERT
11 TEST_11 11 2012-02-26 14:17:47.750 Dean 10001
INSERT
22 TEST_22 22 2012-02-26 14:17:47.763 Dean 10001
DELETE
22 TEST_22 22 2012-02-26 14:17:47.763 Dean 10001
INSERT
33 TEST_33 22 2012-02-26 14:17:47.763 Dean 10001
DELETE
33 TEST_33 22 2012-02-26 14:17:47.763 Dean 10001
DELETE
11 TEST_11 11 2012-02-26 14:17:47.750 Dean 10001
- SQL trigger 当表格insert,delete 时触发记录历史数据
- Sql Server Trigger 的使用(Insert ,Update,Delete...)
- SqlServer Trigger insert update delete
- Sqlserver Trigger(Insert,Update,Delete)
- [SQL Server] TRIGGER 触发器获得insert, delete, update行的信息
- 【zabbix教程六】——自定义item和trigger当内存不足10%时触发报警
- 【zabbix教程六】——自定义item和trigger当内存不足10%时触发报警
- SQL INSERT TO &UPDATE&DELETE
- SQL INSERT INTO & UPDATE & DELETE
- MySQL 当记录不存在时插入insert if not exists
- MySQL 当记录不存在时insert,当记录存在时update
- MySQL 当记录不存在时insert,当记录存在时update
- MySQL 当记录不存在时insert,当记录存在时update
- MySQL 当记录不存在时insert,当记录存在时update
- MySQL 当记录不存在时insert,当记录存在时update
- 记录INSERT,UPDATE或DELETE语句
- SQLSERVER触发器触发INSERT,UPDATE,DELETE三种状态
- SQL语句复习:insert,update,delete,select
- POJ3122--Pie--二分
- 开发相关-语言代码表
- 一些有趣的编程题
- oracle笔记(2)-char varchar varchar2 的区别
- SQL Server查询性能优化——创建索引原则(二)
- SQL trigger 当表格insert,delete 时触发记录历史数据
- gcc 源码分析1
- C#控制台练习多肽实验报告
- Synergy-几台电脑公用鼠标和键盘
- android-wifi模块篇之jni监控wifi网络连接、dhcpcd执行和power电源控制
- VI学习笔记——插入模式下的操作技巧
- SQl trigger 有两个表,其中一个表的数据变化,同时要影响到另一个表
- 数据挖掘学习札记:KNN算法(二)
- 对HashMap 进行排序