【发布时间】:2011-06-10 12:48:59
【问题描述】:
我已声明下表供审核触发器使用:
CREATE TABLE audit_transaction_ids (id IDENTITY PRIMARY KEY, uuid VARCHAR UNIQUE NOT NULL, `time` TIMESTAMP NOT NULL);
触发器将在同一个事务中被多次调用。
第一次调用触发器时,我希望它插入一个新的 具有当前 TRANSACTION_ID() 和时间的行。
随后调用触发器的时间,我希望它返回 现有的“id”(为此我调用 Statement.getGeneratedKeys() ) 不改变“uuid”或“时间”。
目前的架构似乎有两个问题。
当我调用
MERGE INTO audit_transaction_ids (uuid, time) KEY(id) VALUES(TRANSACTION_ID(), NOW())时,我得到:org.h2.jdbc.JdbcSQLException: Column "ID" contains null values; SQL statement: MERGE INTO audit_transaction_ids (uuid, time) KEY(id) VALUES (TRANSACTION_ID(), NOW()) [90081-155]我怀疑在现有行上调用 MERGE 会改变“时间”。
如何解决这两个问题?
【问题讨论】: