创建序列如何从指定的表中选取最大值开始

hbgzg3006 2011-06-08 04:20:18
比如client表,有列ID,我想创建一个sequence:seq_client, start with client中的Max(ID)。如何实现?
谢谢。老外写的我没测试通过呢?
http://forums.devshed.com/oracle-development-96/create-sequence-using-subselect-value-from-select-542288.html
...全文
166 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbgzg3006 2011-06-09
  • 打赏
  • 举报
回复
谁有测试可以过的?
hbgzg3006 2011-06-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 tangren 的回复:]

CREATE sequence customer_id start with (select max(customer_id) from customer) increment by 1;
没有这种语法。

DECLARE
v_max_id NUMBER;
BEGIN
--取出最大值
SELECT MAX(customer_id) INTO v_max_id FROM ……
[/Quote]
我怎么没测试通过呢?
hbgzg3006 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 tangren 的回复:]

CREATE sequence customer_id start with (select max(customer_id) from customer) increment by 1;
没有这种语法。

DECLARE
v_max_id NUMBER;
BEGIN
--取出最大值
SELECT MAX(customer_id) INTO v_max_id FROM ……
[/Quote]
我也在国外网站看到类似的了 我试试 呵呵
luoyoumou 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 hbgzg3006 的回复:]
比如client表,有列ID,我想创建一个sequence:seq_client, start with client中的Max(ID)。如何实现?
谢谢。老外写的我没测试通过呢?
http://forums.devshed.com/oracle-development-96/create-sequence-using-subselect-value-from-select-542288.h……
[/Quote]

-- 你分两部走撒:
-- *(01) 用查询语句查出当前 client表中的id字段的最大值:
select maxi(id) from client;

-- 用上面查询得到的值+1作为你要创建的序列的起始值!
hbgzg3006 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hbgzg3006 的回复:]

引用 2 楼 bobo12082119 的回复:

创建一个从大到小的序列不可以吗?
create sequence seq_reverse
start with 1000
increment by -1
maxvalue 100
minvalue 1
nocycle
order

[/Quote]
刚说错了 总有一天有可能会走到重复的时候。还是避免的好。呵呵。
tangren 2011-06-08
  • 打赏
  • 举报
回复
CREATE sequence customer_id start with (select max(customer_id) from customer) increment by 1;
没有这种语法。

DECLARE
v_max_id NUMBER;
BEGIN
--取出最大值
SELECT MAX(customer_id) INTO v_max_id FROM customer;
--动态创建seq
EXECUTE IMMEDIATE ' CREATE sequence customer_id
START WITH ' || v_max_id || ' increment BY 1';
END;
/
hbgzg3006 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 java3344520 的回复:]

用触发器吧,
[/Quote]
没写出来……
我pl/sql写,他不让我在begin end中用create……
hbgzg3006 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bobo12082119 的回复:]

创建一个从大到小的序列不可以吗?
create sequence seq_reverse
start with 1000
increment by -1
maxvalue 100
minvalue 1
nocycle
order
[/Quote]
总有一天有可能会跟Max(ID)重复的。还是避免的好。呵呵。
304的的哥 2011-06-08
  • 打赏
  • 举报
回复
创建一个从大到小的序列不可以吗?
create sequence seq_reverse
start with 1000
increment by -1
maxvalue 100
minvalue 1
nocycle
order
iqlife 2011-06-08
  • 打赏
  • 举报
回复
用触发器吧,

17,377

社区成员

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

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