请教关于sequence的一个问题。

[复制链接]
查看11 | 回复3 | 2014-5-9 08:24:37 | 显示全部楼层 |阅读模式
OS: solaris 8
DB: oracle 9204
现在有这样的一种情况,一些表的字段用trigger将sequence产生的值进行填充,但没有检测机制,有些情况下手工插入的错误使得表的字段值不连续,如果表的记录比较多,如何将那些不符合要求的值挑选出来?
例如:
表 guest(guestid,name) guestid 用trigger TR_SEQ_GUEST将seq_1 产生的值填充,step为1
trigger脚本:
CREATE OR REPLACE TRIGGER TR_SEQ_GUEST
BEFORE INSERT ON GUEST
FOR EACH ROW WHEN (USER not like 'SPLEX%')
BEGIN

if :new.guestid is null

then

SELECT seq_1.nextval INTO :new.guestidFROM dual;

end if;
END;
guestid值应为:
1
2
3
4
5
.....
由于一些人为错误guestid变为
1
2
3
4
8
5
........

如果有几十万条的记录如何筛选出不符合标准的记录?
谢谢!
回复

使用道具 举报

千问 | 2014-5-9 08:24:37 | 显示全部楼层
就这样排好了,筛选干吗?
回复

使用道具 举报

千问 | 2014-5-9 08:24:37 | 显示全部楼层
是这种情况:
如果guestid的值>sequence.nextval程序可能会发生一些错误,现在的情况是一些表已经存在这样一些不标准的字段(有人手工添加了值), 如何将他们挑选出来呢?
谢谢 lfree的答复。
回复

使用道具 举报

千问 | 2014-5-9 08:24:37 | 显示全部楼层
你可以修改序列的值,取值为,当前数据最大值+1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行