我需要创建一个触发器,每次添加新记录时,它都会创建一个自动标识符,但不会使用序列。
CREATE TABLE EPS(EPSID, EPSDesc);
必须是atomatic的人是EPSID,所以我尝试了这样但是没有工作:
CREATE OR REPLACE TRIGGER t_EPS
BEFORE INSERT ON EPS
FOR EACH ROW
INSERT MEDICAMENTOPACIENTEDIASEMANA
VALUES EPSID= dbms_random.value(1,100) number from dual;
那么我该怎么做才能解决这个问题呢?
答案 0 :(得分:1)
如果要将值分配给要插入的记录的其中一列,只需写下:
:new.epsid := dbms_random.value(1,100);
所以它看起来像这样:
CREATE OR REPLACE TRIGGER t_EPS
BEFORE INSERT ON EPS
FOR EACH ROW
BEGIN
:new.epsid := dbms_random.value(1,100);
-- (the rest of the trigger here)
END;
编辑我看到你的触发器中有另一个表,是否应该将记录插入另一个表?如果是这样,请使用:
CREATE OR REPLACE TRIGGER t_EPS
BEFORE INSERT ON EPS
FOR EACH ROW
BEGIN
INSERT INTO MEDICAMENTOPACIENTEDIASEMANA (epsid)
VALUES (dbms_random.value(1,100));
END;