MySQL中ON UPDATE CURRENT_TIMESTAMP的逻辑存储在什么位置?
MySQL自动更新时间戳逻辑的存储位置说明
你用到的ON UPDATE CURRENT_TIMESTAMP是MySQL为TIMESTAMP类型(以及5.6版本之后的DATETIME类型)提供的列级内置属性,不属于触发器、定时事件这类独立的数据库对象,所以你找不到对应的触发器或事件记录是正常情况。
具体存储位置
这个属性直接和字段的定义绑定,存在MySQL的系统数据字典中,你可以通过两种方式直接验证:
- 执行建表语句查询命令:
SHOW CREATE TABLE TestLastUpdate;
返回的结果里LastUpdate列的定义会完整显示DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP的配置,这个就是你要找的自动更新逻辑的实际定义。
- 查询information_schema系统表:
SELECT COLUMN_DEFAULT, EXTRA FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '替换为你实际的数据库名' AND TABLE_NAME = 'TestLastUpdate' AND COLUMN_NAME = 'LastUpdate';
返回结果的EXTRA字段中会存储on update CURRENT_TIMESTAMP的内容,这就是该逻辑的实际存储位置。
关于SQLYog不显示的问题
你的猜测是正确的,这就是SQLYog工具本身的表信息展示模块没有把列的EXTRA属性做完整展示,很多老旧的数据库管理工具对这类MySQL专属的列属性支持度不高,你更换成更新的数据库管理工具就可以直接在列属性设置页看到对应的自动更新配置项。
内容的提问来源于stack exchange,提问作者user1729972
相关产品推荐
相关产品推荐

