【问题标题】:Trigger Automatic Id触发自动 ID
【发布时间】:2013-11-29 13:02:17
【问题描述】:

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

CREATE TABLE EPS(EPSID, EPSDesc);

必须是原子的是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;

那么我能做些什么来解决这个问题呢?

【问题讨论】:

    标签: sql oracle triggers oracle-sqldeveloper


    【解决方案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;
    

    【讨论】:

    • 我写错了table的名字只有一个,喜欢你给的第一个答案,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    相关资源
    最近更新 更多