尝试在 Oracle 中创建一个序列,该序列以特定表中的最大值开始。为什么这不起作用?
CREATE SEQUENCE reservation_sequence
MINVALUE 0
START WITH (SELECT MAX(reservation_id)
FROM reservation)
INCREMENT BY 1
CACHE 20;
Run Code Online (Sandbox Code Playgroud)
您不能以这种方式将 DDL 与 DML 混合使用。
最好的选择是匿名 PL/SQL 块:
BEGIN
DECLARE
seqval NUMBER;
BEGIN
SELECT MAX(nvl(reservation_id),0)
INTO seqval
FROM reservation;
execute immediate('CREATE SEQUENCE reservation_sequence MINVALUE 0 START WITH '||seqval||' INCREMENT BY 1 CACHE 20');
END;
END;
/
Run Code Online (Sandbox Code Playgroud)
另外,你确定你想要max()
而不是max()+1
吗?
归档时间: |
|
查看次数: |
19734 次 |
最近记录: |