DB2 iSeries触发器用于添加&;修改的时间戳和用户字段
添加/修改日期可能不需要触发器,也可能有适当的函数来设置其值,在任何情况下: 我的问题是关于以下领域DB2 iSeries触发器用于添加&;修改的时间戳和用户字段,db2,ibm-midrange,Db2,Ibm Midrange,添加/修改日期可能不需要触发器,也可能有适当的函数来设置其值,在任何情况下: 我的问题是关于以下领域 created (timestamp) updated (timestamp) createdBy (string, to hold the created by user name) updatedBy (string, to hold the updated by user name) 如何更改表,以便在创建和更新这些字段时保存适当的值 编辑:我现在只需要知道如何在每次访问记录时设置upd
created (timestamp)
updated (timestamp)
createdBy (string, to hold the created by user name)
updatedBy (string, to hold the updated by user name)
如何更改表,以便在创建和更新这些字段时保存适当的值
编辑:我现在只需要知道如何在每次访问记录时设置updatedBy和updated timestamp字段。创建下表以供参考:
create table test(
id integer generated always as identity,
content char(60),
createdBy char(30) default user,
created timestamp default current timestamp,
updatedBy char(30),
updated timestamp default null,
primary key(id)
)
这个表有一个自动递增的主键(id),一个在insert上设置的createdBy字段,一个在insert上设置的已创建时间戳。现在我们只需要触发器使最后两个按预期工作(有一个新功能可以在不使用触发器的情况下设置updated-on-update,但该功能似乎不允许空值来显示记录从未更新过,因此这对我不起作用)
要查看已设置created和createdBy的默认值,请执行以下操作:
select * from test
要添加更新触发器,请执行以下操作:
CREATE TRIGGER mytrigger
NO CASCADE BEFORE UPDATE ON test
REFERENCING NEW AS post
FOR EACH ROW MODE DB2ROW
SET
post.updated = CURRENT TIMESTAMP,
post.updatedBy = USER
要查看上述操作是否有效,请更新“内容”中的值:
查看新的默认值
select * from co05arh/test
然后我们应该看到类似的东西
ID CONTENT CREATEDBY CREATED UPDATEDBY UPDATED
1 first thing updated KEN 2011-04-29 16:16:17.942429 KEN 2011-04-29 16:16:28.649543
2 second thing KEN 2011-04-29 16:16:18.01629 <null> <null>
ID内容由创建更新由更新创建
第一件事更新了KEN 2011-04-29 16:16:17.942429 KEN 2011-04-29 16:16:28.649543
第二件事肯2011-04-29 16:16:18.01629
好的,我看到创建的字段仅通过使用时间戳来处理,默认值是插入时间。一个向下…“createdBy CHAR(30)default USER”处理createdBy字段…还有两个。本教程回答了我的datetime触发器问题,我可能会在稍后自我回答。。。
select * from co05arh/test
ID CONTENT CREATEDBY CREATED UPDATEDBY UPDATED
1 first thing updated KEN 2011-04-29 16:16:17.942429 KEN 2011-04-29 16:16:28.649543
2 second thing KEN 2011-04-29 16:16:18.01629 <null> <null>