我正在使用 Liquibase 生成 MySQL 和 HSQLDB 数据库。
在几个表中,我有一个名为“last_modified”的列,它是该特定记录的最后一次更新的 TIMESTAMP。
<changeSet author="bob" id="7">
<createTable tableName="myTable">
<column autoIncrement="true" name="id" type="INT">
<constraints nullable="false" primaryKey="true" />
</column>
<column name="name" type="VARCHAR(128)">
<constraints nullable="false" />
</column>
<column name="description" type="VARCHAR(512)" />
<column defaultValueBoolean="true" name="enabled" type="BIT">
<constraints nullable="false" />
</column>
<column name="last_modified" type="TIMESTAMP"/>
</createTable>
<modifySql dbms="mysql">
<append value=" engine innodb" />
</modifySql>
</changeSet>
我注意到,如果我使用 MySQL,为该列生成的 SQL 是:
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
虽然如果我使用 HSQLDB,在更新的情况下不会发生任何事情,但我希望 MySQL 数据库具有相同的行为,更新时的默认值等于 CURRENT_TIMESTAMP。
如何将 CURRENT_TIMESTAMP 设置为更新时的默认值?