【发布时间】:2016-08-31 18:11:30
【问题描述】:
我有一个名为 ORDERITEMS 的表。
CREATE TABLE DB2ADMIN.ORDERITEMS (
ORDERITEMS_ID BIGINT NOT NULL,
STOREENT_ID INTEGER NOT NULL,
ORDERS_ID BIGINT NOT NULL,
TERMCOND_ID BIGINT,
TRADING_ID BIGINT,
ITEMSPC_ID BIGINT,
CATENTRY_ID BIGINT,
PARTNUM VARCHAR(64)
);
我需要创建一个名为ORDERITEM_LOG 的新表,它看起来基本相同,但多了两列:
CREATE TABLE DB2ADMIN.ORDERITEM_LOG (
ORDERITEMS_ID BIGINT NOT NULL,
STOREENT_ID INTEGER NOT NULL,
ORDERS_ID BIGINT NOT NULL,
TERMCOND_ID BIGINT,
TRADING_ID BIGINT,
ITEMSPC_ID BIGINT,
CATENTRY_ID BIGINT,
PARTNUM VARCHAR(64),
LOG_ACTION_DATE VARCHAR(254),
LOG_ACTION_TYPE VARCHAR(1)
);
我需要创建一个监视ORDERITEMS 表的触发器。每当在ORDERITEMS 表中插入、删除或更新一行时,都需要对ORDERITEM_LOG 表执行相同的操作,另外两列用CURRENT TIMESTAMP 和'U' 填充,@分别为 987654330@ 或 'I'(取决于所采取的操作)。
例如,如果我在ORDERITEMS 表中插入一行,我希望看到在ORDERITEM_LOG 表中插入一个重复的行,时间戳在LOG_ACTION_DATE,'I' 在LOG_ACTION_TYPE .然后,如果我要删除ORDERITEMS 中的行,我希望看到'I' 在ORDERITEM_LOG 表中更新为'D',并看到更新的时间戳。我希望在ORDERITEMS 表之前更新ORDERITEM_LOG 表;
如何编写一个触发器来满足我的需求?
【问题讨论】:
-
您看过手册中的触发器示例了吗?您是否尝试过编写一些代码?有什么特别令你苦恼的事情吗?
-
是的,我已经尝试编写一些仅用于插入的代码,但我不确定该去哪里。 CREATE TRIGGER OI_LOG_TRIGGER BEFORE INSERT ON ORDERITEMS FOR EACH FOR BEGIN ???插入 ORDERITEM_LOG () 值 ();??? --不确定这里发生了什么 END