2014-09-04 17 views
6

Seuqunce tetikleyicisi oluşturmaya çalışıyorum ancak SQL Developer'da tetikleyici sql oluştururken hata oluşuyor. Anlamıyorum, aslında her şey yolunda görünüyor. Aşağıdaki ayrıntıları paylaşıyorum, lütfen bana yardım edin.Oracle Sequence Trigger Oluşturma

Benim tetik sql:

CREATE OR REPLACE TRIGGER "TRIGGER1" BEFORE INSERT ON ACCOUNTS 
FOR EACH ROW 
WHEN (new."ID" IS NULL) 
BEGIN 
    SELECT ACCOUNTS_SEQ.NEXTVAL 
    INTO :new."ID" 
    FROM dual; 
END; 
/

Ve hata açıklaması:

Error starting at line : 5 in command - 
CREATE OR REPLACE TRIGGER "TRIGGER1" BEFORE INSERT ON ACCOUNTS 
FOR EACH ROW 
WHEN (new."ID" IS NULL) 
BEGIN 
    SELECT ACCOUNTS_SEQ.NEXTVAL 
    INTO :new."ID" 
    FROM dual 
Error report - 
SQL Command: trıgger "TRIGGER1" 
Failed: Warning: completed with warning 

Error starting at line : 12 in command - 
END 
Error report - 
Unknown Command 
+1

Bu ikili tırnaklardan kurtulun ve yeniden derleyin. –

+0

'ID'' HESAPLAR' tablosunda da gerçek alan olmalıdır. – vapcguy

cevap

10

şekilde aşağıdaki Deneyin:

CREATE OR REPLACE TRIGGER TRIGGER1 
BEFORE INSERT ON ACCOUNTS 
FOR EACH ROW 
WHEN (new.ID IS NULL) 
BEGIN 
    SELECT ACCOUNTS_SEQ.NEXTVAL 
    INTO :new.ID 
    FROM dual; 
END; 
/

Sizin Sıra bu

gibi görünmelidir
CREATE OR REPLACE SEQUENCE ACCOUNT_SEQ 
START WITH 1 
INCREMENT BY 1; 

Yardım edin.

+0

Maalesef tetik oluşturuldu. Bunu derleyemiyorum. Hata (8,11): PLS-00103: Aşağıdakilerden birini beklerken “dosya sonu” sembolüyle karşılaşıldı:; CREATE OR INSERT ON ZAMAN (new.ID IS NULL) BEGIN HER ROW İÇİN HESAPLAR ÖNCE MANDALLAMA trigger1 DEĞİŞTİRİN SEÇ ACCOUNTS_SEQ.NEXTVAL INTO: new.ID ikili – user1928388

+0

Şimdi sql benziyor tetikleyebilir bloktan sonra '/' kullanıyor. – user1928388

+2

İTİBAREN emin olun –

0
CREATE OR REPLACE TRIGGER TRIGGER1 
BEFORE INSERT ON ACCOUNTS 
FOR EACH ROW 
BEGIN 
IF :new.ID IS NULL THEN 
SELECT ACCOUNTS_SEQ.NEXTVAL 
INTO :new.ID 
FROM dual; 
END IF; 
END;