You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找MariaDB中含ON UPDATE CURRENT_TIMESTAMP()的列并移除该属性

找出所有带ON UPDATE CURRENT_TIMESTAMP的TIMESTAMP列并移除属性

1. 查询目标列

利用information_schema系统库可以快速定位所有包含该属性的列,执行以下SQL即可:

SELECT 
    TABLE_SCHEMA AS 数据库名,
    TABLE_NAME AS 表名,
    COLUMN_NAME AS 列名
FROM 
    information_schema.COLUMNS
WHERE 
    DATA_TYPE = 'timestamp'
    AND EXTRA LIKE '%ON UPDATE CURRENT_TIMESTAMP%'
    AND TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys');

该语句会自动排除系统数据库,仅返回业务库中符合条件的列信息。

2. 批量生成移除属性的ALTER语句

如果需要批量处理,可以自动生成对应的修改语句,省去手动编写的麻烦:

SELECT 
    CONCAT(
        'ALTER TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` MODIFY COLUMN `', COLUMN_NAME, '` TIMESTAMP ', 
        IF(IS_NULLABLE = 'NO', 'NOT NULL ', ''),
        IF(COLUMN_DEFAULT IS NOT NULL, CONCAT('DEFAULT ', COLUMN_DEFAULT), ''),
        ';'
    ) AS 待执行SQL
FROM 
    information_schema.COLUMNS
WHERE 
    DATA_TYPE = 'timestamp'
    AND EXTRA LIKE '%ON UPDATE CURRENT_TIMESTAMP%'
    AND TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys');

生成的语句会保留原列的NOT NULL约束和默认值,仅移除ON UPDATE CURRENT_TIMESTAMP属性。建议先检查生成的SQL是否符合预期,再复制执行。

注意事项

  • 执行ALTER语句前建议备份表数据,避免意外情况
  • 如果列原本设置了DEFAULT CURRENT_TIMESTAMP,生成的语句会保留该默认值,不会影响原有默认行为

内容的提问来源于stack exchange,提问作者Zhiyong Li

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:50:30