oracle中序列的相关问题,insert ...... select 报错

2025-05-13 23:33:16
推荐回答(4个)
回答(1):

语句语法应该没问题,我经常用这种方式插入,你在序列钱加入数据库OWNER名试试看,即
insert into table1(id,zd1,zd2,zd3.....) select 用户名.sequence_id.nextval, zd1,zd2,zd3...... from table2

不推荐用select nvl(max(id),0) from table1 ) +1,因为如果你中间有数据删除,ID就会重新排序,对历史数据,如果涉及到流程就会错乱了

回答(2):

我测试 insert into t1(id) select seq_id.nextval from t2, 这个正常呀,你是不是子查询用了group by或order by?

回答(3):

后两个sql肯定是不行的,没有commit之前,table1的max(id)和数量count(*)不会变的。
第一个sql感觉没有问题,能把报错的具体信息贴出来吗,另外sequence_id应该在建立存储过程之前就建好没有问题吧。

回答(4):

insert into table1 select sequence_id.nextval,t.zd1,t.zd2,t.zd3... from  (select zd1,zd2,zd3...from table2) t

这样呢?