postgresSQL 实现数据修改后,自动更新updated_date/ts等字段
1. 需求说明:
实现MYSQL中有on update CURRENT_TIMESTAMP
2. 需求分析
由于数据库迁移需要将MYSQL中的数据迁移到postgresSQL中,由于MYSQL中有on update CURRENT_TIMESTAMP这种功能但是PostgresSQL中并没有。需要寻找一个代替方法来做,采用触发器,来进行更新
3. 实现
1. 表的结构如下
CREATE TABLE users ( id serial not null, name varchar(100), email varchar(200), updated_time timestamp )
需要实现的功能,当数据更新的时候,将updated_time字段进行更新
2. 创建触发器更新该字段
CREATE OR REPLACE FUNCTION "upd_timestamp"() RETURNS TRIGGER AS $$ BEGIN NEW.updated_time = now(); RETURN NEW; END; $$ language 'plpgsql';
3. 在表中添加对应的触发器
CREATE TRIGGER "updated_time" BEFORE UPDATE ON "users" FOR EACH ROW EXECUTE PROCEDURE "upd_timestamp"();
4. 测试即可