当前位置: 首页 > 科技观察

PostgreSQL时间戳自动更新

时间:2023-03-12 13:11:13 科技观察

问题描述PostgreSQL执行Insert语句时,可以实现创建表时自动填写时间的功能,但是更新表时不会自动更新时间戳。在mysql中,可以在建表时定义自动更新字段,如:createtableab(idint,changetimestamptimestampNOTNULLdefaultCURRENT_TIMESTAMPonupdateCURRENT_TIMESTAMP);如何在PostgreSQL中操作?解决方案是通过触发器实现的,如下:createorreplacefunctionupd_timestamp()returnstriggeras$$beginnew.modtimeifiedst=ampcurrent_;returnnew;end$$languageplpgsql;droptableifexists;createtablets(idbigserialprimarykey,tradeidinteger,emailvarchar(50),numinteger,modifiedtimestampdefaultcurrent_timestamp);createtriggert_namebeforeachupedateont;测试代码:insertintots(tradeid,email,num)values(1223,'mike_zhang@live.com',1);updatetssetemail='Mike_Zhang@live'wheretradeid=1223;createuniqueindexts_tradeid_idxonts(tradeid);insertintots(tradeid,email,num)values(1223,'Mike_Zhang@live.com',2)onconflict(tradeid)doupdatesetemail=excluded.email,num=excluded.num;select*fromts;--deletefromts;好了,就这些了,希望对你有帮助。