求助,关于触发器。

conancode 2010-05-08 10:58:53
一共有三个表分别是A,B,C,表结构如下
A:[id](主键,非空),[cj_id](唯一键,外键,非空),[name](vchar(50),可为空)
B:[id](主键,非空),[well_id](唯一键,外键,非空),[name](vchar(50),可为空)
C:[cj_id](主键,非空),[well_id](外键,非空)

表C是表A和表B的关联表,
其中表A的cj_id和biaoB的well_id都来自于表C中的相应字段。

现在要求当表A中插入数据时,在表B中的相应字段也插入数据:B.id=A.id,B.well_id=C.well_id,B.name=A.name

请问,用触发器能实现吗?最好能写的详细些,我是新手,原来没太接触过这方面的东西,谢谢了。

...全文
64 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
duqiangcise 2010-05-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 fibbery 的回复:]
to duqiangcise:
在触发器中不能使用异常捕获。
[/Quote]
3q!
JJ0320 2010-05-08
  • 打赏
  • 举报
回复
帮顶..
siakang 2010-05-08
  • 打赏
  • 举报
回复
学习了,4楼的不错
fibbery 2010-05-08
  • 打赏
  • 举报
回复
to duqiangcise:
在触发器中不能使用异常捕获。
duqiangcise 2010-05-08
  • 打赏
  • 举报
回复
修改一下:
create or replace trigger a_trig
before insert on a for each row
declare
v_id varchar2(20);
begin
select well_id into v_id from c where cj_id=:new.cj_id;
insert into b(id,well_id,name)value(:new.id,v_id,:new.name);
exception
when others then
null;
end;

4楼的比较简单一些。
duqiangcise 2010-05-08
  • 打赏
  • 举报
回复
create or replace trigger a_trig
before insert on a
declare
v_id varchar2(20);
begin
select well_id into v_id from c where cj_id=:new.cj_id;
insert into b(id,well_id,name)value(:new.id,v_id,:new.name);
exception
when others then
null;
end;

试试看
fibbery 2010-05-08
  • 打赏
  • 举报
回复
CREATE OR REPLACE TRIGGER trigger_a2b AFTER INSERT ON A FOR EACH ROW
BEGIN
INSERT INTO B(id,well_id,name)
SELECT new.id,C.well_id,new.name
FROM C
WHERE C.id=new.cj_id;
END trigger_a2b;
/
duqiangcise 2010-05-08
  • 打赏
  • 举报
回复
当在a中插入数据的时候还要根据a的cj_id到c中去找相应的well_id并把wll_id赋值给b的well_id。可以通过触发器实现。
AI轻创哥 2010-05-08
  • 打赏
  • 举报
回复
在 表A 上创建触发器 ,可以实现。
duqiangcise 2010-05-08
  • 打赏
  • 举报
回复
现在要求当表A中插入数据时,在表B中的相应字段也插入数据:B.id=A.id,B.well_id=C.well_id,B.name=A.name
不是很理解,请说明在c表中需要插入数据应满足的条件。
conancode 2010-05-08
  • 打赏
  • 举报
回复
谢谢四楼和五楼的兄弟哈,问题解决了,太感谢了。
conancode 2010-05-08
  • 打赏
  • 举报
回复
谢谢各位啊,我先试试哈

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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