大侠帮忙看一下,为什么用nextval会有重复值?

KarlyLi 2007-09-13 11:17:33
我在使用seq_t_user_info_id.nextval时,为什么会出现重复值呀?

其中我创建seq_t_user_info_id的SQL 代码为:

create sequence seq_t_user_info_id
minvalue 1
maxvalue 99999999999999999
start with 1
increment by 1
cache 20
order;

但在执行下面的SQL时,报违反约束,其中我的User_id为主键,不能重复。

insert INTO t_user_info(user_id,login_name)
SELECT
seq_t_user_info_id.nextval,substr(t.gsbm,1,2)||lpadseq_t_user_info_id.nextval,6,'0')
FROM at_t_user_info t


我这个语句有错吗?请大家帮忙看一下,谢谢了!!
...全文
1576 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Croatia 2007-09-18
  • 打赏
  • 举报
回复
先把t_user_info表里面的数据,备份出去,再执行一次看看呢?
Croatia 2007-09-18
  • 打赏
  • 举报
回复
christophe,
你这样的做法,a_var永远都是一个值,不错才怪。
christophe 2007-09-15
  • 打赏
  • 举报
回复
1. 定义sequence为nocycle (不循环使用).
2. 下面的coding更清晰一点.

select seq_t_user_info_id.nextval into a_var from dual;

SELECT
a_var,substr(t.gsbm,1,2)||lpad(a_var,6,'0')
FROM at_t_user_info t
GEMPMGR 2007-09-14
  • 打赏
  • 举报
回复
把 t_user_info 的表结构贴出来看看
love4myxsg 2007-09-14
  • 打赏
  • 举报
回复
先用max函数找一下最大值,再看看序列的当前值,如果,呵呵。。。
xiaoxiao1984 2007-09-13
  • 打赏
  • 举报
回复
SELECT
seq_t_user_info_id.nextval,substr(t.gsbm,1,2)||lpad(seq_t_user_info_id.nextval,6,'0')
FROM at_t_user_info t

查询看看,正常情况下是seq.nextval是不会出现重复的,是不是原来表中存在手动插入或者手动修改的userid, 而这个useid正好和当前插入的重复
KarlyLi 2007-09-13
  • 打赏
  • 举报
回复
Croatia(Croatia) ( ) 信誉:95 2007-09-13 11:44:52 得分: 0


SELECT
seq_t_user_info_id.nextval,substr(t.gsbm,1,2)||lpadseq_t_user_info_id.nextval,6,'0')
FROM at_t_user_info t

这个纪录,选出了很多条记录吧。

为什么呢?

我是想将at_t_user_info 临时表中的数据转到正式表t_user_info中呀!!

KarlyLi 2007-09-13
  • 打赏
  • 举报
回复
不好意思,刚才在编辑格式的时候丢了一个括号!!

Croatia 2007-09-13
  • 打赏
  • 举报
回复
SELECT
seq_t_user_info_id.nextval,substr(t.gsbm,1,2)||lpadseq_t_user_info_id.nextval,6,'0')
FROM at_t_user_info t

这个纪录,选出了很多条记录吧。
Croatia 2007-09-13
  • 打赏
  • 举报
回复
t_user_info德彪的结构是什么?主键是什么?
Croatia 2007-09-13
  • 打赏
  • 举报
回复
先不管Sequence,你的句子,就少了一个左括号。
Lpad`后面。
wffffc 2007-09-13
  • 打赏
  • 举报
回复
lpadseq_t_user_info_id.nextval,6,'0')这是什么?肯定错了
KarlyLi 2007-09-13
  • 打赏
  • 举报
回复
备注一下

其中GSBM是有值的,就是公司编码

GSBM会有重复值出现的。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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