2017-08-02 7 views

答えて

-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 
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; 
+0

Thx.Butと別のエラートリガーその 'OTDTEST.TRIGGER_VC_PART_LIST' INSERT INTO VC_PART_LIST(VC_VTC、PART_NO、CONSUME_QTY)VALUES( '6175SMFGD132000D'、 'SC25R136'、 '11');これは無効です。 –

+0

URテーブル構造を共有します。 Consume_qtyは数値型またはvarchar2型の列ですか? – Himanshujaggi

関連する問題