菜鸟求助触发器怎么写啊

titankwok 2012-09-11 10:36:32
现在有两个数据库A(SID=AAA)和B(SID=BBB)
A库里的表
Table1 ID NAME DQ
01 张三 湖北
02 李四 湖南


B库的表
Table2 nameid name
0001 张三
0002 李四
Table3 DQID DQMC
001 湖北
002 湖南
Table4 djid nameid dqid
00001 0001 001


现在都是往table4里面写数,而且都是ID 现在想写一个触发器就是当table4一有数据插入就往A库的TABLE1插入数据(table1存的都是直接的内容不是ID)
...全文
118 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
人生无悔 2012-09-12
  • 打赏
  • 举报
回复
:new,:old是觸發器中兩張系統臨時表

:old你表中舊的數據,:new表中新增或更新的新值

還有觸發器中不要用commit
ORAClE SE 2012-09-11
  • 打赏
  • 举报
回复
上面还不完全

CREATE OR REPLACE TRIGGER My_Trigger
AFTER INSERT ON Table4
BEGIN
INSERT INTO Table1
SELECT c.Djid, a.NAME, b.Dqmc
FROM Table2 a, Table3 b, Table4 c
WHERE a.Nameid = c.Nameid AND b.Dqid = c.Dqid AND
c.Dqid = :new.dqid;
COMMIT;
END;
ORAClE SE 2012-09-11
  • 打赏
  • 举报
回复
CREATE OR REPLACE TRIGGER MY_TRIGGER
AFTER INSERT ON Table4
BEGIN
INSERT INTO Table1
SELECT c.djid, a.name,b.dqmc
FROM Table2 a ,Table3 b,table4 c
WHERE a.nameid=c.nameid AND b.dqid=c.dqid;
COMMIT;
END;
titankwok 2012-09-11
  • 打赏
  • 举报
回复
c.Dqid = :new.dqid;
这一句是不是判断是否是新增加的数据?
用c.djid = :new.djid 或者c.nameid = :new.nameid 都可以代替?

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧