gpt4 book ai didi

mysql - 更新 Liquibase 时的默认值

转载 作者:可可西里 更新时间:2023-11-01 06:28:32 25 4
gpt4 key购买 nike

我正在使用 Liquibase 生成 MySQL 和 HSQLDB 数据库。
在几个表中,我有一个名为“last_modified”的列,它是该特定记录的最后一次更新的时间戳。

<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 设置为更新时的默认值?

最佳答案

或者您可以试试这个,因为您已经添加了 modifySql 标签:

<column defaultValue="CURRENT_TIMESTAMP"
name="timestamp"
type="TIMESTAMP">
<constraints nullable="false"/>
</column>
<modifySql dbms="mysql">
<regExpReplace replace="'CURRENT_TIMESTAMP'" with="CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"/>
<append value=" engine innodb" />
</modifySql>

Liquibase 3.1.1 不会生成您上面描述的内容。我必须按照上面给出的方式处理它

关于mysql - 更新 Liquibase 时的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19230489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com