Oracle 10g SQL Plus设置表自增列遇ORA-00933错误求助
Oracle 10g实现BF_USER表USER_ID列自增的正确方法
你遇到的ORA-00933错误有两个核心原因:
- 第一条
ALTER TABLE语句末尾缺少分号,SQL Plus中多条语句必须用分号分隔 - Oracle 10g不支持
IDENTITY(1,1)语法,这个自增列特性是Oracle 12c及以后版本才引入的
要在Oracle 10g中实现自增列,必须通过序列+触发器的组合来实现,具体步骤如下:
- 正确删除原USER_ID列(补充分号)
ALTER TABLE BF_USER DROP COLUMN USER_ID;
- 创建用于生成自增ID的序列
CREATE SEQUENCE SEQ_BF_USER_USER_ID START WITH 1 -- 起始值 INCREMENT BY 1 -- 步长 NOCACHE -- 不缓存序列值,避免异常中断导致ID不连续 NOCYCLE; -- 序列达到最大值后不循环
- 添加USER_ID列
ALTER TABLE BF_USER ADD USER_ID INT;
- 创建触发器,在插入数据时自动为USER_ID赋值
CREATE OR REPLACE TRIGGER TRG_BF_USER_USER_ID BEFORE INSERT ON BF_USER FOR EACH ROW BEGIN SELECT SEQ_BF_USER_USER_ID.NEXTVAL INTO :NEW.USER_ID FROM DUAL; END; /
执行完以上步骤后,向BF_USER表插入数据时,USER_ID会自动从1开始递增。
内容的提问来源于stack exchange,提问作者Nayeon
相关产品推荐
相关产品推荐

