2016-08-22 6 views
0

Oracle 11gで自動増分トリガを作成する際に問題が発生しています。誰かが私が間違っていることを指摘できれば、本当に感謝します。トリガのOracle自動増分トリガの問題

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; 

私は取得していますエラー: [コード:900、SQL状態:42000] ORA-00900:無効なSQLシーケンスのための私のスクリプトはこれですステートメント

ありがとうございました。

+2

おそらく同じ問題:http://stackoverflow.com/questions/29450495/autoincrement-in-oracle-with-seq-and-trigger-invalid-sql-statement – Codo

+0

あなたはどのクライアントを使用していますか? – sstan

+0

なぜ、単に ':new.line_num:= SPSS_QUOTE_LINE_ITEMS_SEQ.NEXTVAL;' select ... from dual; ' –

答えて

0

以下のようにあなたのトリガーを変更するためにこれを行うための正しい方法:私はあなたの道をたどる場合、またはそれはあなたが通常使用してトリガーで用語を使用

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; 

ように書き

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; 

:oldは列の古い値を参照し、newは新しい値を参照します。

+0

返事をありがとう。 – John

関連する問題