Oracle自动增量触发问题



我在Oracle 11g中创建自动增量触发器时遇到了一个问题。如果有人能指出我做错了什么,我将非常感激。我的脚本序列是这样的:

CREATE SEQUENCE SPSS_QUOTE_LINE_ITEMS_SEQ start with 1
increment by 1
minvalue 1;

触发器脚本:

CREATE OR REPLACE TRIGGER SPSSQUOTELINEITEMS_ON_INSERT
BEFORE INSERT ON SPSS_QUOTE_LINE_ITEMS
FOR EACH ROW
BEGIN
 SELECT SPSS_QUOTE_LINE_ITEMS_SEQ.NEXTVAL
 INTO   :new.line_num
 FROM   dual;
END;

我得到的错误:[Code: 900, SQL State: 42000] ORA-00900: invalid SQL statement

修改触发器的正确方法如下:

CREATE OR REPLACE TRIGGER SPSSQUOTELINEITEMS_ON_INSERT
BEFORE INSERT ON SPSS_QUOTE_LINE_ITEMS
FOR EACH ROW
BEGIN
 :new.line_num := SPSS_QUOTE_LINE_ITEMS_SEQ.NEXTVAL;
 --No need to write any Select Into statement here.
END;

或者如果我遵循你的方式,那么它会像

CREATE OR REPLACE TRIGGER SPSSQUOTELINEITEMS_ON_INSERT
BEFORE INSERT ON SPSS_QUOTE_LINE_ITEMS
FOR EACH ROW
declare
var number;
BEGIN
SELECT SPSS_QUOTE_LINE_ITEMS_SEQ.NEXTVAL
 INTO   var
 FROM   dual;
 :new.line_num :=var;
END;

通常在触发器中使用术语,使用:old来引用列的旧值,使用:new来引用新值。

相关内容

  • 没有找到相关文章

最新更新