有两个表:
t_A和t_B
t_B表是空表,
t_A表中有数据,当修改和删除该表中一行记录时,这行记录所有字段内容插入t_B表中,在加上操作时间;同时修改时要插入两行记录,修改前和修改后的。
该怎么写这个触发器啊?先谢谢了
t_A和t_B
t_B表是空表,
t_A表中有数据,当修改和删除该表中一行记录时,这行记录所有字段内容插入t_B表中,在加上操作时间;同时修改时要插入两行记录,修改前和修改后的。
该怎么写这个触发器啊?先谢谢了
解决方案 »
- 在ASP中,如何存取大容量字符!
- 求救:关于Oracel存储过程中用表名做参数的问题
- Create rollback segment 问题请教
- 数据批量录入
- 初学oracle,有人说oracle8i宝典不错的,适合初学者吗。《racle 9i 中文版基础教程》这本书怎么样啊
- 关于OracleDataReader问题,郁闷,(在线等)
- 如何以用户A登陆访问用户B的表时,不带用户B前缀(不使用同义词)。
- 急,编译的时候出错
- 怪问题,请高手指点!
- 如何在oracle9i的Enterprise Manager Console中建一个新的方案?
- 一个技术群:14857829
- pdf文件在ORACLE中的存取问题???
2 after update on t_a
3 for each row
4 declare
5 -- local variables here
6 begin
7 insert into t_B (id, name, reason, Modifydate)values(:old.id, :old.name,
'old_record',sysdate);
8 insert into t_B (id, name, reason, Modifydate)values(:new.id, :new.name,
'new_record',sysdate);
9 end MODIFY_TAB_A;
10 /触发器已创建SQL> create or replace trigger DELETE_TAB_B
2 after delete on t_a
3 for each row
4 declare
5 -- local variables here
6 begin
7 insert into t_B (id, name, reason, Modifydate)values(:old.id, :old.name,
'del_record',sysdate);
8 end DELETE_TAB_B;
9 /触发器已创建SQL> update t_A set id = 5 where name = 'maomao';已更新 1 行。SQL> select * from t_B; ID NAME REASON MODIFYDATE
---------- ---------- ---------- -------------------
2 maomao old_record 2006-08-24 11:00:07
5 maomao new_record 2006-08-24 11:00:07
可以把字段多一倍出来,一半存老值,一半存新值,这样容易对应。还加两字段类型,时间
比如删除类型就是'D',修改就是'M'.create or replace trigger dm
before delete or modify on t_A
for each row
begin
if deleting then
insert into ...(.....,'D',sysdate);
elsif modifing then
insert into ...(....,'M',sysdate);
end if;
end;
/
里面肯定语法错误很多,有很久没有碰过ORACLE了,不过思路应该是这样的。
记性完全不行了,呵呵 。
UPDATE ON T_A
FOR EACH ROW
DECLARE
BEGIN
insert into T_B (:OLD.IS_BALANCE,:OLD.WTRUCK_TIME,'修改前');
insert into T_B (:NEW.IS_BALANCE ,sysdate,'修改后');
END;以上编译报下面错误
Warning: Trigger created with compilation errors请楼上看看
少了values.楼主可以参照我的思路,那样修改前后的值容易对比一些。
insert into tab_name values(:OLD.IS_BALANCE,:OLD.WTRUCK_TIME,'修改前')楼主少了关键字values