我希望代码能够在插入新行时自动更新时间戳,就像我可以使用CURRENT_TIMESTAMP在MySQL中做的那样。
我将如何在PostgreSQL中实现这一点?
CREATE TABLE users (
id serial not null,
firstname varchar(100),
middlename varchar(100),
lastname varchar(100),
email varchar(200),
timestamp timestamp
)
发布于 2012-03-05 00:23:59
要在插入期间填充列,请使用DEFAULT
值:
CREATE TABLE users (
id serial not null,
firstname varchar(100),
middlename varchar(100),
lastname varchar(100),
email varchar(200),
timestamp timestamp default current_timestamp
)
请注意,可以通过在INSERT
语句中提供一个值来显式覆盖该列的值。如果你想防止这种情况发生,你确实需要一个trigger。
如果需要在每次更新行时更新该列,则还需要触发器(作为mentioned by E.J. Brennan)
请注意,对列名使用保留字通常不是一个好主意。您应该找到与timestamp
不同的名称
发布于 2014-10-10 01:40:13
更新时间戳,仅当值更改时
基于E.J的链接,并从此链接添加一条if语句(https://stackoverflow.com/a/3084254/1526023)
CREATE OR REPLACE FUNCTION update_modified_column()
RETURNS TRIGGER AS $$
BEGIN
IF row(NEW.*) IS DISTINCT FROM row(OLD.*) THEN
NEW.modified = now();
RETURN NEW;
ELSE
RETURN OLD;
END IF;
END;
$$ language 'plpgsql';
发布于 2015-06-07 03:29:01
使用'now()‘作为默认值会自动生成时间戳。
https://stackoverflow.com/questions/9556474
复制相似问题