Oracle 在插入查询中使用主键的顺序值
如何为具有顺序主键的Oracle数据库编写insert查询,以便insert语句自动获取序列中的下一个数字Oracle 在插入查询中使用主键的顺序值,oracle,Oracle,如何为具有顺序主键的Oracle数据库编写insert查询,以便insert语句自动获取序列中的下一个数字 INSERT INTO LD_USER_ROLE(USER_ROLE_ID,INS_USER,INS_DATE, USERNAME) VALUES (100, 'sp22',to_date('2003/05/03 21:02:44','yyyy/mm/dd hh24:mi:ss'),'JOHN BARRY', ) 在上面的语句中,我已经硬编码了键“USER\u ROLE\u ID”的值
INSERT INTO LD_USER_ROLE(USER_ROLE_ID,INS_USER,INS_DATE, USERNAME)
VALUES (100, 'sp22',to_date('2003/05/03 21:02:44','yyyy/mm/dd hh24:mi:ss'),'JOHN BARRY', )
在上面的语句中,我已经硬编码了键“USER\u ROLE\u ID”的值100,但我想按照第一段中的解释进行更改。为什么不为序列创建一个触发器,如下所示: 顺序:
CREATE SEQUENCE LD_USER_ROLE_SEQ
INCREMENT BY 1 START WITH 1 NOMAXVALUE NOMINVALUE NOCYCLE NOCACHE NOORDER
触发:
CREATE TRIGGER LD_USER_ROLE_INSERT BEFORE INSERT ON LD_USER_ROLE
REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW
BEGIN
SELECT LD_USER_ROLE_SEQ.NEXTVAL INTO :NEW.USER_ROLE_ID FROM DUAL;
END;
触发器将在每次插入时自动获取下一个值/id(如mysql中的auto_increment)。除了使用触发器外,还可以在insert语句中直接使用序列:
CREATE SEQUENCE LD_USER_ROLE_SEQ;
INSERT INTO LD_USER_ROLE
(USER_ROLE_ID,INS_USER,INS_DATE, USERNAME)
VALUES
(ld_user_role_seq.nextval, 'sp22',to_date('2003/05/03 21:02:44','yyyy/mm/dd hh24:mi:ss'),'JOHN BARRY', )
brah,在你的创建序列的末尾需要一个分号。