oracle 存储过程事务控制
我要往两个表里面insert数据、这两个表是有外键关联的!我在一个事务里进行两条insert语句!先在主表里面insert一条后!需要commit才能拿到这个id再往子表...
我要往两个表里面insert数据、这两个表是有外键关联的!我在一个事务里进行两条insert语句!先在主表里面insert一条后!需要commit才能拿到这个id再往子表里面进行插入!但是!如果再往子表里面insert时报错了!但是主表的数据又已经commit了!如果把主表的数据也回滚?求答案、、、
存储过程如下:
create or replace procedure aaa
is var2 number; begin
SELECT Seq_Tbtopic.nextval INTO var2 FROM dual; insert into tbTopic values (var2 , 1, 1, '口语3333',1,3,2,'',''); commit; insert into tbchildtopic values (Seq_Tbchildtopic.Nextval,var2,'','duck','/kangsi/Resource/test/B1/1_2_2_1_Emily_duck_.mp3','duck'); commit;
end aaa; 展开
存储过程如下:
create or replace procedure aaa
is var2 number; begin
SELECT Seq_Tbtopic.nextval INTO var2 FROM dual; insert into tbTopic values (var2 , 1, 1, '口语3333',1,3,2,'',''); commit; insert into tbchildtopic values (Seq_Tbchildtopic.Nextval,var2,'','duck','/kangsi/Resource/test/B1/1_2_2_1_Emily_duck_.mp3','duck'); commit;
end aaa; 展开
2个回答
展开全部
把第一个commit去掉既可,如下:
create or replace procedure aaa is
var2 number;
begin SELECT Seq_Tbtopic.nextval INTO var2 FROM dual;
insert into tbTopic values (var2 , 1, 1, '口语3333',1,3,2,'','');
insert into tbchildtopic values (Seq_Tbchildtopic.Nextval,var2,'','duck','/kangsi/Resource/test/B1/1_2_2_1_Emily_duck_.mp3','duck');
commit;
end aaa;
create or replace procedure aaa is
var2 number;
begin SELECT Seq_Tbtopic.nextval INTO var2 FROM dual;
insert into tbTopic values (var2 , 1, 1, '口语3333',1,3,2,'','');
insert into tbchildtopic values (Seq_Tbchildtopic.Nextval,var2,'','duck','/kangsi/Resource/test/B1/1_2_2_1_Emily_duck_.mp3','duck');
commit;
end aaa;
追问
第二个表是子表必须要先有了第一个主表的id才能插入、不commit的话id还没生成?直接插子表不会报错?
2012-12-17
展开全部
1. 为什么第一个insert后必须要commit??
2. 如果已经commit了,就只好删除或修改了
2. 如果已经commit了,就只好删除或修改了
追问
因为我第二条insert语句是要现有第一个条语句的id才能插入的。我第一个表的外键、如果不commit的话能插入吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询