如何在一个表上创建一个触发器,该表为每个插入的行使用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;