这些指示信息假设您正在使用 DB2 通用数据库,并指导您完成以下任务:
以下任务是可选的:
请完成以下步骤:
在 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
等待脚本完成运行。 如果您首次运行该脚本,以下消息将显示两次:
DB21034E 该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在 SQL 处理期间,它返回: SQL0204N “DB2ADMIN.DBINPUT_EVENTS”不是已定义的名称。SQLSTATE=42704忽略这两条消息。 显示此消息是因为脚本在创建新表之前尝试除去名为 DBINPUT_CUSTOMER 和 DBINPUT_EVENTS 的现有表,但如果之前未曾运行此脚本,那么脚本找不到这些现有表。
如果您不是首次运行该脚本,您可能会看到以下触发器警告:
SQL0280W 视图、触发器或具体化查询表“DB2ADMIN.DBIN_CUST_UPDATE”替换了现有的不可用视图、触发器或具体化查询表。SQLSTATE=01595同样可以忽略这些消息。