如何在一个表上创建一个触发器,该表为每个插入的行使用pl/sql中的序列值填充id?

如何在一个表上创建一个触发器,该表为每个插入的行使用pl/sql中的序列值填充id?,sql,oracle,plsql,Sql,Oracle,Plsql,请检查下面的触发器 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

  IF(:NEW.DEPARTMENT_ID IS NULL )

  THEN

   select DEPT_DEPTID_SEQ.nextval INTO :new.DEPARTMENT_ID FROM dual;

  END IF;

END; 

如果您使用的是Oracle 12c或更高版本,请使用触发器而不是触发器:

创建表部门(
部门id号(10,0)
始终作为身份生成
约束部门\部门\ id \主键
)

这是在创建新表时从Oracle自身生成的触发器:

CREATE OR REPLACE TRIGGER dept_id_trig
  BEFORE INSERT ON DEPARTMENTS
  FOR EACH ROW
DECLARE
BEGIN
    :new.DEPARTMENT_ID := DEPT_DEPTID_SEQ.nextval;
END;
创建或替换触发器部门id\u触发器
在插入部门之前
每行
开始
开始
如果插入和:NEW.DEPARTMENT\u ID为空,则
从SYS.DUAL中选择DEPT_DEPTID_SEQ.NEXTVAL至:NEW.DEPARTMENT_ID;
如果结束;
结束列_序列;
结束;

那么您的电脑有什么问题吗?
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;