oracle触发器,update一张表时,将update的那一行数据中的部分值更新到另一张表。字段定义一样

我就是这么写的,但是报触发器无效,且未通过验证;CREATEORREPLACETRIGGERtest_triggerBEFOREUPDATEONinp_ta_tranFO...   我就是这么写的,但是报触发器无效,且未通过验证;
  
CREATE OR REPLACE TRIGGER test_trigger
BEFORE UPDATE ON inp_ta_tran
FOR EACH ROW
BEGIN
INSERT INTO trans_record (sbrlsh,nzycs,szcks,szrks,dzksj)
VALUES (:new.sbrlsh,:new.nzycs,:new.sksdm,:new.sckdm,:new.dcyrq)
END;
展开
 我来答
小白聊电子科技
2020-02-18
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

1、首先创建测试的原表A。

2、插入原表A测试数据,执行完SQL后,记得点击commit按钮,否则,数据不会持久化到数据库。

3、【创建表结构与数据】此处不需要commit动作。

4、【同字段仅数据】。

5、【不同字段仅数据】,执行完SQL后,记得点击commit按钮,否则,数据不会持久化到数据库。

6、最后效果如下图,这样就完成了。

micro0369
推荐于2017-12-15
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
CREATE OR REPLACE TRIGGER TR_t1_u
AFTER UPDATE ON t1---当修改了T1时触发
FOR EACH ROW
BEGIN     
update t2 set col1 = :new.col1,col2=:new.col2,...
     where id = :old.id;   -- id是关键列,不能修改;或者其他关联条件
END;
更多追问追答
追问
才发现我的问题表述有错误。。。

是要‘插入’到另一张新表,表是空的。。。。
追答

那就insert啊


CREATE OR REPLACE TRIGGER TR_t1_u
AFTER UPDATE ON t1---当修改了T1时触发
FOR EACH ROW
BEGIN     
insert t2(id,col1,col2,col3,...) values(:new.id,:new.col1,:new.col2,:new.col3,...);
END;


那如果第一次插入后,再次修改后,是插入还是更新?


总之大概这么写。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式