2016-09-26 127 views
-2

使用序列和觸發器創建標識列。但無法運行,因爲在年底PLS-00103:遇到下列其中一項時遇到符號「文件結束」:

create table slide1 (id number(10), 
subject varchar2(25),constraint pk_id PRIMARY KEY(id) 
); 

Create sequence slide1_sequence start with 1 
increment by 1 
minvalue 1 
maxvalue 10000; 

create sequence id_seq; 

CREATE OR REPLACE TRIGGER slide1_trigger 
BEFORE INSERT ON slide1 
FOR EACH ROw 

BEGIN 
    SELECT slide1_seq.NEXTVAL 
    INTO :new.id 
    FROM dual 
close slide1; 
END; 
+1

是什麼'接近slide1'做失蹤分號的腳本? – Thilo

+0

「create table」語句後缺少分號;你創建兩個序列,但是使用你從未創建過的序列'slide1_sequence';我不知道'close slide1'部分 – Aleksej

+1

'create trigger'後面缺少'/':http://stackoverflow.com/a/10207695/330315觸發器不必要的複雜。 ':new.id:= slide1_seq.NEXTVAL;'會做得很好。 Aleksej指出,不需要'select'和'close'部分是不正確的。 –

回答

1
SQL> create table slide1 (id number(10),subject varchar2(25),constraint pk_id PRIMARY KEY(id)); 
    Table created 

    SQL> Create sequence slide1_sequence start with 1 increment by 1 minvalue 1 maxvalue 10000; 
    Sequence created 

SQL> create sequence id_seq; 
Sequence created 

    SQL> CREATE OR REPLACE TRIGGER slide1_trigger 
     2 BEFORE INSERT ON slide1 
     3 FOR EACH ROw 
     4 
     5 BEGIN 
     6 SELECT slide1_sequence.NEXTVAL 
     7 INTO :new.id 
     8 FROM dual; 
     9 END; 
    10 
    11/
    Trigger created 
+0

或者只是':new.id:= slide1_sequence.NEXTVAL;'(少即是多)。 –

相關問題