この説明では、Oracle データベースを使用していることを前提とし、以下のタスクを順番に説明していきます。
インストールでデフォルトのデータベースが作成されていない場合には、データベースを作成してください。 この場合、DBA 指示に従ってから、以下の指示に従います。
事前定義の SQL スクリプトを実行して以下のステップを実行することもできます。 サンプルのホームに戻り、インポート・オプションを 1 つ選択します。 インポート後に、SQL スクリプトでデータベースをセットアップすることを選択できます。
注 データベース表を作成してそれにアクセスする際には、以下の問題に注意してください。
-- First create the tables needed for Application Data DROP TABLE "ADAPTER_CUSTOMER" ; CREATE TABLE "ADAPTER_CUSTOMER" ( "PKEY" VARCHAR(10) NOT NULL PRIMARY KEY, "FIRSTNAME" VARCHAR(20), "LASTNAME" VARCHAR(20), "ADDRESS" VARCHAR(10), "CCODE" VARCHAR(10) ); ALTER TABLE "ADAPTER_CUSTOMER" ADD CONSTRAINT "CUST_ADDR_FK" FOREIGN KEY ("ADDRESS") REFERENCES "ADAPTER_ADDRESS" ("PKEY") ON DELETE CASCADE; DROP TABLE "ADAPTER_ADDRESS" ; CREATE TABLE "ADAPTER_ADDRESS" ( "PKEY" VARCHAR(10) NOT NULL PRIMARY KEY, "FIRSTLINE" VARCHAR(20), "SECONDLINE" VARCHAR(20), "CODE" VARCHAR(10), "CITY" VARCHAR(20), "COUNTRY" VARCHAR(10)); DROP TABLE "ADAPTER_INVOICE" ; CREATE TABLE "ADAPTER_INVOICE" ( "PKEY" VARCHAR(10) NOT NULL PRIMARY KEY, "ITEM" VARCHAR(10) NOT NULL, "QUANTITY" INTEGER NOT NULL, "CUSTOMER" VARCHAR(10) NOT NULL); ALTER TABLE "ADAPTER_INVOICE" ADD CONSTRAINT "INV_CUST_FK" FOREIGN KEY ("CUSTOMER") REFERENCES "ADAPTER_CUSTOMER" ("PKEY") ON DELETE CASCADE; DROP TABLE "IBM_EVENTS" ; CREATE TABLE "IBM_EVENTS" ( "EVENT_ID" INTEGER PRIMARY KEY, "CONNECTOR_ID" VARCHAR(40), "OBJECT_KEY" VARCHAR(10) NOT NULL, "OBJECT_NAME" VARCHAR(40) NOT NULL, "OBJECT_VERB" VARCHAR(40) NOT NULL, "EVENT_PRIORITY" INTEGER NOT NULL, "EVENT_TIME" TIMESTAMP NOT NULL DEFAULT CURRENT TIMESTAMP, "EVENT_STATUS" INTEGER NOT NULL, "EVENT_COMMENT" VARCHAR(100) ); CREATE SEQUENCE "IBM_SEQUENCE" (start with 1 increment by 1 nomaxvalue); CREATE TRIGGER "IBM_SEQ_TRIG" BEFORE INSERT ON "IBM_EVENTS" FOR EACH ROW BEGIN SELECT DBINPUT_SEQUENCE.nextval INTO :NEW.EVENT_ID FROM dual; END; DROP TRIGGER "ADAP_CUST_EVENT"; CREATE TRIGGER "ADAP_CUST_EVENT" AFTER INSERT OR DELETE OR UPDATE ON "ADAPTER_CUSTOMER" REFERENCING NEW AS N OLD AS O FOR EACH ROW BEGIN IF inserting THEN INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS) VALUES(:N.PKEY,'ADAPTER_CUSTOMER', 'Create', 1, 0); END IF; IF updating THEN INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS) VALUES(:N.PKEY,'ADAPTER_CUSTOMER', 'Update', 1, 0); END IF; IF deleting THEN INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS) VALUES(:N.PKEY,'ADAPTER_CUSTOMER', 'Delete', 1, 0); END IF; END; DROP TRIGGER "ADAP_ADD_EVENT"; CREATE TRIGGER "ADAP_ADD_EVENT" AFTER INSERT OR DELETE OR UPDATE ON "ADAPTER_ADDRESS" REFERENCING NEW AS N OLD AS O FOR EACH ROW BEGIN IF inserting THEN INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS) VALUES(:N.PKEY,'ADAPTER_ADDRESS', 'Create', 1, 0); END IF; IF updating THEN INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS) VALUES(:N.PKEY,'ADAPTER_ADDRESS', 'Update', 1, 0); END IF; IF deleting THEN INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS) VALUES(:N.PKEY,'ADAPTER_ADDRESS', 'Delete', 1, 0); END IF; END; DROP TRIGGER "ADAP_INV_EVENT"; CREATE TRIGGER "ADAP_INV_EVENT" AFTER INSERT OR DELETE OR UPDATE ON "ADAPTER_INVOICE" REFERENCING NEW AS N OLD AS O FOR EACH ROW BEGIN IF inserting THEN INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS) VALUES(:N.PKEY,'ADAPTER_INVOICE', 'Create', 1, 0); END IF; IF updating THEN INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS) VALUES(:N.PKEY,'ADAPTER_INVOICE', 'Update', 1, 0); END IF; IF deleting THEN INSERT INTO IBM_EVENTS(OBJECT_KEY, OBJECT_NAME, OBJECT_VERB, EVENT_PRIORITY, EVENT_STATUS) VALUES(:N.PKEY,'ADAPTER_INVOICE', 'Delete', 1, 0); END IF; END;
sqlplus <uid>/<password> @adapter_create_tables_oracle.sql
スクリプトの実行が終了するまで待ちます。 スクリプトを初めて実行すると、次のようなメッセージが表示されます。
ORA-00942: table or view does not existメッセージを無視します。メッセージが表示される理由は、スクリプトは DBINPUT_CUSTOMER および DBINPUT_EVENTS という既存の表を新規表の作成前に除去しようとしますが、これまでスクリプトを実行したことがない場合は、スクリプトが既存の表を検出できないからです。