この説明では、Oracle データベースを使用していることを前提とし、以下のタスクを順番に説明していきます。
始める前に
データベースを作成する必要があります。
注 データベース表を作成してそれにアクセスする際には、以下の問題に注意してください。
DROP TABLE "DBINPUT_CUSTOMER"; CREATE TABLE "DBINPUT_CUSTOMER" ( "PKEY" VARCHAR(10) NOT NULL PRIMARY KEY, "FIRSTNAME" VARCHAR(20), "LASTNAME" VARCHAR(20), "CCODE" VARCHAR(10) ); DROP TABLE "DBINPUT_EVENTS"; CREATE TABLE "DBINPUT_EVENTS" ( "EVENT_ID" INTEGER PRIMARY KEY "OBJECT_KEY" VARCHAR(80) NOT NULL, "OBJECT_VERB" VARCHAR(40) NOT NULL ); CREATE SEQUENCE "DBINPUT_SEQUENCE" (start with 1 increment by 1 nomaxvalue); CREATE TRIGGER "DBIN_SEQ_TRIG" BEFORE INSERT ON "DBINPUT_EVENTS" FOR EACH ROW BEGIN SELECT DBINPUT_SEQUENCE.nextval INTO :NEW.EVENT_ID FROM dual; END; CREATE TRIGGER "DBIN_CUST_EVENT" AFTER INSERT OR DELETE OR UPDATE ON "DBINPUT_CUSTOMER" REFERENCING NEW AS N OLD AS O FOR EACH ROW BEGIN IF inserting THEN INSERT INTO DBINPUT_EVENTS(OBJECT_KEY, OBJECT_VERB) VALUES(:N.PKEY,'Create'); END IF; IF updating THEN INSERT INTO DBINPUT_EVENTS(OBJECT_KEY, OBJECT_VERB) VALUES(:N.PKEY,'Update'); END IF; IF deleting THEN INSERT INTO DBINPUT_EVENTS(OBJECT_KEY, OBJECT_VERB) VALUES(:O.PKEY,'Delete'); END IF; END;
sqlplus <uid>/<password> @dbinput_create_tables_oracle.sql
スクリプトの実行が終了するまで待ちます。 スクリプトを初めて実行すると、次のようなメッセージが表示されます。
ORA-00942: table or view does not existメッセージを無視します。メッセージが表示される理由は、スクリプトは DBINPUT_CUSTOMER および DBINPUT_EVENTS という既存の表を新規表の作成前に除去しようとしますが、これまでスクリプトを実行したことがない場合は、表が存在しないからです。