一、MYSQL字段值自动更新时间
在生产环境中可能会出现,项目已经上线,但是更新时间的字段没有赋值,或者开过过程中每次都针对更新时间增加代码赋值很繁琐。现在可以通过修改更新时间的字段,来保证每次更新数据时,数据的更新时间自动更新。在一个已经建好的表执行如下sql即可完成更新时间自动更新:
ALTER TABLE `tb_sys_user` MODIFY COLUMN update_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
若是批量的操作,可采用下文技巧三来批量完成。
二、统一在PowerDesigner中增加字段
可通过VB脚本统一处理,脚本内容如下:
Option Explicit
Dim mdl ' the current model
Set mdl = ActiveModel
Dim Tab 'running table
Dim col_ModCreateBy , col_ModCreateDate ,col_ModUpdateBy ,col_ModUpdateDate ,col_ModRemarks , col_ModVersion , col_ModStatus
' 定义属性变量
for each Tab in ActiveModel.Tables
Set col_ModCreateBy = Tab.Columns.CreateNew
set col_ModCreateDate = Tab.Columns.CreateNew
set col_ModUpdateBy = Tab.Columns.CreateNew
set col_ModUpdateDate = Tab.Columns.CreateNew
set col_ModRemarks = Tab.Columns.CreateNew
set col_ModVersion = Tab.Columns.CreateNew
set col_ModStatus = Tab.Columns.CreateNew
col_ModCreateBy.name = "创建者"
col_ModCreateBy.code = "createBy"
col_ModCreateBy.DataType = "varchar(32)"
col_ModCreateDate.name = "创建时间"
col_ModCreateDate.code = "createDate"
col_ModCreateDate.DataType = "datetime"
col_ModUpdateBy.name = "更新者"
col_ModUpdateBy.code = "updateBy"
col_ModUpdateBy.DataType = "varchar(32)"
col_ModUpdateDate.name = "更新时间"
col_ModUpdateDate.code = "updateDate"
col_ModUpdateDate.DataType = "datetime"
col_ModRemarks.name = "备注信息"
col_ModRemarks.code = "remark"
col_ModRemarks.DataType = "varchar(500)"
col_ModVersion.name = "版本"
col_ModVersion.code = "version"
col_ModVersion.DataType = "int(4)"
col_ModStatus.name = "状态"
col_ModStatus.code = "state"
col_ModStatus.DataType = "int(4)"
next
在PowerDesigner中使用方法为:PowerDesigner->Tools->Execute Commands->Edit/Run Scripts。将代码Copy进去执行就可以了,是对整个CDM或PDM进行操作。

三、MYSQL统一修改字段表结构中信息
以本文问题一示例,先进入information_schema库,操作TABLES表。


写SQL查询语句,如下:
SELECT
CONCAT(
'ALTER TABLE ',
st.`TABLE_NAME`,
' MODIFY COLUMN update_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;'
) AS alterSQL
FROM
`TABLES` st
WHERE st.`TABLE_SCHEMA` = 'dbname';
以\n结尾导出成csv,以文本形式打开,即可形成如下的sql句列。再到MYSQL客户端,批量执行即可。






