[英]How to create a trigger on a table that for each inserted row populates id with value from sequence in pl/sql?
create or replace TRIGGER dept_id_trig
BEFORE INSERT ON DEPARTMENTS
FOR EACH ROW
DECLARE
BEGIN
IF(:NEW.DEPARTMENT_ID IS NULL )
THEN
select DEPT_DEPTID_SEQ.nextval INTO :new.DEPARTMENT_ID FROM dual;
END IF;
END;
请检查以下触发器。
CREATE OR REPLACE TRIGGER dept_id_trig
BEFORE INSERT ON DEPARTMENTS
FOR EACH ROW
DECLARE
BEGIN
:new.DEPARTMENT_ID := DEPT_DEPTID_SEQ.nextval;
END;
如果您使用的是 Oracle 12c 或更高版本,请在列上使用IDENTITY
子句而不是触发器:
CREATE TABLE departments(
department_id NUMBER(10,0)
GENERATED ALWAYS AS IDENTITY
CONSTRAINTS departments__department_id__pk PRIMARY KEY
)
这是在创建新表时由 Oracle 自身生成的触发器:
create or replace TRIGGER dept_id_trig
BEFORE INSERT ON DEPARTMENTS
FOR EACH ROW
BEGIN
<<COLUMN_SEQUENCES>>
BEGIN
IF INSERTING AND :NEW.DEPARTMENT_ID IS NULL THEN
SELECT DEPT_DEPTID_SEQ.NEXTVAL INTO :NEW.DEPARTMENT_ID FROM SYS.DUAL;
END IF;
END COLUMN_SEQUENCES;
END;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.