2016-09-26 16 views
-2

シーケンスとトリガーを使用してID列を作成する。しかしPLS-00103:次のいずれかを予期している場合、シンボル "end-of-file"が検出されました。

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'文の後ろにセミコロンがありません。 2つのシーケンスを作成しますが、作成したことのないシーケンス '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;'(それ以下です) –

関連する問題