触发自动ID

时间:2013-11-16 00:12:40

标签: sql oracle triggers oracle-sqldeveloper

我需要创建一个触发器,每次添加新记录时,它都会创建一个自动标识符,但不会使用序列。

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;

那么我该怎么做才能解决这个问题呢?

1 个答案:

答案 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;