利用oracle触发器记录表数据修改前后属性
2012-11-07 05:56
435 查看
创建普通表
createtable TT(idnumber,namevarchar2(20),timestampdate);
创建属性修改记录表
Create table TT_history(newid number,oldid number, newname varchar2(20), oldname varchar2(20), newtimestamp date,oldtimestamp date,tt VARCHAR2(20),term VARCHAR2(20),User_at VARCHAR2(20));创建触发器
create or replace trigger AA_test_triger
after update on
TT
for each row
declare
begin
insert into TT_history values(:new.id,:old.id,:new.name,:old.name,:new.timestamp,:old.timestamp);
end TT;
或者
createorreplacetrigger
AA
AFTERINSERTORUPDATEORDELETEON
TT
foreachrow
declare
Time_now
DATE;
Terminal
CHAR(20);
begin
--get
current time, and the terminal(终端)
of the user:
Time_now
:= SYSDATE;
Terminal
:= USERENV('TERMINAL');
IF
INSERTING THEN
--记录对TT的插入操作
INSERT
INTO
TT_history VALUES(:new.id,:old.id,:new.name,:old.name,Time_now,:old.timestamp,'INSERT
',Terminal,User);
ELSIF
DELETING THEN
--记录对TT的删除操作
INSERT
INTO
TT_history VALUES(:new.id,:old.id,:new.name,:old.name,Time_now,:old.timestamp,'DELETE
',Terminal,User);
ELSIF
UPDATING THEN
--记录对TT的修改操作
INSERT
INTO
TT_history VALUES(:new.id,:old.id,:new.name,:old.name,Time_now,:old.timestamp,'update
',Terminal,User);
END
IF;
END;
修改记录查询
createtable TT(idnumber,namevarchar2(20),timestampdate);
创建属性修改记录表
Create table TT_history(newid number,oldid number, newname varchar2(20), oldname varchar2(20), newtimestamp date,oldtimestamp date,tt VARCHAR2(20),term VARCHAR2(20),User_at VARCHAR2(20));创建触发器
create or replace trigger AA_test_triger
after update on
TT
for each row
declare
begin
insert into TT_history values(:new.id,:old.id,:new.name,:old.name,:new.timestamp,:old.timestamp);
end TT;
或者
createorreplacetrigger
AA
AFTERINSERTORUPDATEORDELETEON
TT
foreachrow
declare
Time_now
DATE;
Terminal
CHAR(20);
begin
--get
current time, and the terminal(终端)
of the user:
Time_now
:= SYSDATE;
Terminal
:= USERENV('TERMINAL');
IF
INSERTING THEN
--记录对TT的插入操作
INSERT
INTO
TT_history VALUES(:new.id,:old.id,:new.name,:old.name,Time_now,:old.timestamp,'INSERT
',Terminal,User);
ELSIF
DELETING THEN
--记录对TT的删除操作
INSERT
INTO
TT_history VALUES(:new.id,:old.id,:new.name,:old.name,Time_now,:old.timestamp,'DELETE
',Terminal,User);
ELSIF
UPDATING THEN
--记录对TT的修改操作
INSERT
INTO
TT_history VALUES(:new.id,:old.id,:new.name,:old.name,Time_now,:old.timestamp,'update
',Terminal,User);
END
IF;
END;
修改记录查询
相关文章推荐
- 利用KissXML解析xml数据,并对XML节点属性进行修改
- 同一张表内、利用变化的上一行数据动态地修改下一行数据(示例Demo)
- Oracle 之利用BBED修改数据块SCN----极端环境下的数据恢复(一)
- oracle触发器(当插入或删除或修改一张表A时,能把新数据同步到另一张结构相同的表B里面)
- Oracle中用触发器实现自动记录表数据被修改的历史信息
- 利用子查询找出某个属性存在A表而不存在B表的数据
- Mongodb嵌套文档的修改-利用数组修改器更新数据
- WPF如何利用附加属性修改ShowGridLines效果详解
- Oracle触发器修改数据时同步执行插入该条数据
- 在VB.NET中 用代码 利用SQL语句创建数据库、表、存储过程、视图、索引、规则、修改表、查看数据等的方法
- Ext修改GridPanel数据和字体颜色、css属性等
- 利用【数据链接属性】对话框,创建连接字符串
- 利用反射机制动态获取对象属性名称及数据类型
- 利用反射获取与修改private的属性的值
- ASP.NET 2.0中Gridview利用DataFormatString属性设置数据格式
- 利用EXCEL将多列多行数据转换为SQL语句【新增、删除、修改同理】
- Oracle数据库使用触发器记录表数据修改记录
- 利用mysql 导入导出文件修改文件数据格式
- 利用powershell修改ip属性
- 点击修改按钮,将数据显示在弹层窗口中,利用ajax实现