警告:使用编译错误创建触发器

时间:2017-08-02 10:40:45

标签: oracle

我正在尝试在oracle中创建一个触发器,例如blow:

CREATE OR REPLACE TRIGGER TRIGGER_VC_PART_LIST
BEFORE INSERT ON VC_PART_LIST FOR EACH ROW   
BEGIN
SELECT VC_PART_LIST_SEQ.NEWTVAL INTO :new.SEQ_ID FROM dual;
END;
/
谁能帮帮我?谢谢。

2 个答案:

答案 0 :(得分:1)

按顺序获取下一个值,使用NEXTVAL。以下是正确的语法

CREATE OR REPLACE TRIGGER TRIGGER_VC_PART_LIST
   BEFORE INSERT
   ON VC_PART_LIST
   FOR EACH ROW
BEGIN
   SELECT VC_PART_LIST_SEQ.NEXTVAL INTO :new.SEQ_ID FROM DUAL;
END;

答案 1 :(得分:-1)

您的代码中存在一些问题。

1)VC_PART_LIST_SEQ.NEWTVAL Oracle中没有任何名为NEWTVAL的内容。它应该是Nextval

2)不需要SQL声明。

参见演示:

<强>触发:

CREATE OR REPLACE TRIGGER TRIGGER_VC_PART_LIST
   BEFORE INSERT
   ON VC_PART_LIST
   FOR EACH ROW
BEGIN
   :new.SEQ_ID  := VC_PART_LIST_SEQ.NEXTVAL;
END;
/

表格

create  table VC_PART_LIST (SEQ_ID number,
VC_VTC varchar2(20), PART_NO varchar2(20), CONSUME_QTY varchar2(20));

<强>序列

create sequence VC_PART_LIST_SEQ start with 1 increment by 1;

<强>插入:

INSERT INTO VC_PART_LIST (VC_VTC, PART_NO, CONSUME_QTY)
     VALUES ('6175SMFGD132000D', 'SC25R136', '11');

 Commit;

<强>选择

SQL>  select * from VC_PART_LIST;

    SEQ_ID VC_VTC               PART_NO              CONSUME_QTY
---------- -------------------- -------------------- --------------------
         1 6175SMFGD132000D     SC25R136             11