在Oracle现有表中添加自增列时遇ORA-01735错误求助
你用的是Oracle数据库,但写了MySQL专属的AUTO_INCREMENT语法,这就是触发ORA-01735错误的原因。Oracle实现自增列的逻辑和MySQL不同,分两种场景给你解决方案:
方案一:Oracle 12c及以上版本(推荐)
Oracle 12c开始支持原生自增列,用GENERATED AS IDENTITY替代AUTO_INCREMENT,执行以下SQL即可:
ALTER TABLE NCS.generic_usg_data_store_dum ADD id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY;
如果需要允许手动插入自定义ID值,可把ALWAYS替换为BY DEFAULT:
ALTER TABLE NCS.generic_usg_data_store_dum ADD id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY;
方案二:Oracle 11g及以下版本
低版本Oracle需要通过「序列+触发器」组合实现自增:
- 先创建序列:
CREATE SEQUENCE seq_generic_usg_data_store_dum START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
- 再创建触发器,插入数据时自动给ID列赋值:
CREATE OR REPLACE TRIGGER trg_generic_usg_data_store_dum_id BEFORE INSERT ON NCS.generic_usg_data_store_dum FOR EACH ROW BEGIN :NEW.id := seq_generic_usg_data_store_dum.NEXTVAL; END; /
- 最后给表添加ID列:
ALTER TABLE NCS.generic_usg_data_store_dum ADD id NUMBER PRIMARY KEY;
内容的提问来源于stack exchange,提问作者Pooja Karanam
相关产品推荐
相关产品推荐

