我希望代码能够在插入新行时自动更新时间戳,因为我可以使用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
)
Run Code Online (Sandbox Code Playgroud) 我有代码只在更新单个特定列时触发触发器.触发器用于触发一个函数,该函数将引发一个postgres"notify"事件,我正在监听它,并且需要测试并验证新输入的详细信息.account_details表上有许多值可以更改,不需要帐户验证,因此仅在AFTER UPDATE(没有时间)的触发器是不好的.
CREATE TRIGGER trigger_update_account_details
AFTER UPDATE ON account_details
FOR EACH ROW
WHEN (OLD.email IS DISTINCT FROM NEW.email)
EXECUTE PROCEDURE notify_insert_account_details();
Run Code Online (Sandbox Code Playgroud)
但是,如果许多列中的一个发生变化,我想触发触发器
WHEN (OLD.email IS DISTINCT FROM NEW.email OR
OLD.username IS DISTINCT FROM NEW.username OR
OLD.password IS DISTINCT FROM NEW.password)
Run Code Online (Sandbox Code Playgroud)
但OR不是触发器的有效关键字.试图搜索要使用的关键字而不是OR似乎没有提出任何由于单词OR的性质:-(