如何为具有顺序主键的Oracle数据库编写插入查询,以便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', )
Run Code Online (Sandbox Code Playgroud)
在上面的语句中,我已经为键'USER_ROLE_ID'硬编码了100的值,但是我想按照第一段中的说明改变它.
你为什么不像这样为你的序列创建一个触发器:
序列:
CREATE SEQUENCE LD_USER_ROLE_SEQ
INCREMENT BY 1 START WITH 1 NOMAXVALUE NOMINVALUE NOCYCLE NOCACHE NOORDER
Run Code Online (Sandbox Code Playgroud)
触发:
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;
Run Code Online (Sandbox Code Playgroud)
触发器将自动获取每个插入的下一个值/ id(如mysql中的auto_increment).