如何在pgAdmin 4中编辑字段时自动更新updated_at时间戳?
在PostgreSQL中实现修改特定布尔字段时自动更新updated_at时间戳
要实现手动修改默认值为false的布尔字段(如is_validated)为true时,自动更新updated_at列到当前时间戳,你可以通过触发器函数完成,具体步骤如下:
1. 若表中无updated_at字段,先添加该字段
如果你的表还没有updated_at列,执行以下SQL创建(默认值设为当前时间,确保新插入的记录也带时间戳):
ALTER TABLE your_table ADD COLUMN updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
替换your_table为你的实际表名。
2. 创建触发器函数
这个函数会检查目标布尔字段是否被修改,若有变化则更新updated_at:
CREATE OR REPLACE FUNCTION update_updated_at() RETURNS TRIGGER AS $$ BEGIN -- 仅当is_validated字段的值发生变化时更新时间戳 IF OLD.is_validated IS DISTINCT FROM NEW.is_validated THEN NEW.updated_at = CURRENT_TIMESTAMP; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql;
替换is_validated为你实际的布尔字段名。
3. 给表绑定触发器
将上面的函数绑定到目标表,设置为更新前触发:
CREATE TRIGGER trigger_update_updated_at BEFORE UPDATE ON your_table FOR EACH ROW EXECUTE FUNCTION update_updated_at();
再次替换your_table为实际表名。
验证效果
完成以上操作后,在pgAdmin 4中手动修改is_validated字段为true时,对应的updated_at会自动更新为当前时间戳;修改其他字段则不会触发updated_at的更新,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者Ahmad Coachendo
相关产品推荐
相关产品推荐

