この説明では、DB2 Universal Database を使用していることを前提とし、以下のタスクを順番に説明していきます。
以下のタスクはオプションです。
以下のステップを実行します。
Windows の場合:
install_dir は、DB2 製品のインストール・ディレクトリーへのパスで置き換える必要があります (C:¥PROGRA~1¥IBM¥SQLLIB など)。この場所は、db2level コマンドを使って検出できます。CREATE DB DBINPUT CONNECT TO DBINPUT BIND 'install_dir\bnd\@db2cli.lst' blocking all grant public TERMINATE
Linux の場合:
install_dir は、DB2 製品のインストール・ディレクトリーへのパスで置き換える必要があります。この場所は、db2level コマンドを使って検出できます。CREATE DB DBINPUT CONNECT TO DBINPUT BIND install_dir/bnd/@db2cli.lst grant public CLIPKG 5 TERMINATE
db2start
db2 -vf dbinput.sql
次のステップ: 以下のいずれかのオプションを選択して、データベース表とトリガーを作成します。
注 データベース表を作成してそれにアクセスする際には、以下の問題に注意してください。
データベース表とトリガーを作成します。
CONNECT TO DBINPUT@ DROP TABLE "DBINPUT_CUSTOMER"@ CREATE TABLE "DBINPUT_CUSTOMER" ( "PKEY" VARCHAR(10) NOT NULL, "FIRSTNAME" VARCHAR(20), "LASTNAME" VARCHAR(20), "CCODE" VARCHAR(10) ) DATA CAPTURE NONE@ DROP TABLE "DBINPUT_EVENTS"@ CREATE TABLE "DBINPUT_EVENTS" ( "EVENT_ID" INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 NO CYCLE NO CACHE), "OBJECT_KEY" VARCHAR(80) NOT NULL, "OBJECT_VERB" VARCHAR(40) NOT NULL ) DATA CAPTURE NONE@ ALTER TABLE "DBINPUT_CUSTOMER" ADD CONSTRAINT "DBINPUTCUSTOMERPK" PRIMARY KEY ("PKEY")@ ALTER TABLE "DBINPUT_EVENTS" ADD CONSTRAINT "DBINPUTEVENTPK" PRIMARY KEY ("EVENT_ID")@ CREATE TRIGGER "DBIN_CUST_CREATE" AFTER INSERT ON "DBINPUT_CUSTOMER" REFERENCING NEW AS N FOR EACH ROW INSERT INTO DBINPUT_EVENTS (OBJECT_KEY, OBJECT_VERB) VALUES (N.pkey, 'Create')@ CREATE TRIGGER "DBIN_CUST_DELETE" AFTER DELETE ON "DBINPUT_CUSTOMER" REFERENCING OLD AS O FOR EACH ROW INSERT INTO DBINPUT_EVENTS (OBJECT_KEY, OBJECT_VERB) VALUES (O.pkey, 'Delete')@ CREATE TRIGGER "DBIN_CUST_UPDATE" AFTER UPDATE ON "DBINPUT_CUSTOMER" REFERENCING NEW AS N FOR EACH ROW INSERT INTO DBINPUT_EVENTS (OBJECT_KEY, OBJECT_VERB) VALUES (N.pkey, 'Update')@ TERMINATE@
db2 -td@ -vf dbinput_create_tables_db2.sql
スクリプトの実行が終了するまで待ちます。 スクリプトを初めて実行する場合は、次のようなメッセージが 2 回表示されます。
DB21034E コマンドが、有効なコマンド行プロセッサー・コマンドでないため、SQL ステートメントとして処理されました。 SQL 処理中に、以下のコマンドが返されました。SQL0204N "DB2ADMIN.DBINPUT_EVENTS" は未定義の名前です。SQLSTATE=42704メッセージは両方とも無視してください。 メッセージが表示される理由は、スクリプトは DBINPUT_CUSTOMER および DBINPUT_EVENTS という既存の表を新規表の作成前に除去しようとしますが、これまでスクリプトを実行したことがない場合は、スクリプトが既存の表を検出できないからです。
スクリプトを実行するのが初めてではない場合は、トリガーのそれぞれで次のような警告が表示されることがあります。
SQL0280W ビュー、トリガー、またはマテリアライズ照会表「DB2ADMIN.DBIN_CUST_UPDATE」が、既存の作動不能なビュー、トリガー、またはマテリアライズ照会表を置換しました。 SQLSTATE=01595これらのメッセージも無視できます。