默认值ON UPDATE Liquibase

多云(的天气

我正在使用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设置为ON UPDATE的默认值?

弗雷德

您无法使用默认值执行此操作。MySQL行为是非标准的,并且不受其他数据库支持。正确的方法是使用TRIGGER,将其定义为BEFORE UPDATE,并在每次更新行时设置时间戳。

更新:从HSQLDB 2.3.4版开始支持此功能。例如:CREATE TABLE T1(ID INT, last_modified timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL)注意,NOT NULL约束必须出现在DEFAULT和ON UPDATE子句之后。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

addForeignKeyConstraint liquibase的ondelete选项的默认值

来自分类Dev

addForeignKeyConstraint liquibase的ondelete选项的默认值

来自分类Dev

在Liquibase默认值字段中添加&符

来自分类Dev

如何从Liquibase中的现有列添加具有默认值的新列

来自分类Dev

如何在Liquibase中定义一组默认列def。PK,防守 索引,默认值。表创建的值?

来自分类Dev

Liquibase默认表空间

来自分类Dev

Liquibase默认表空间

来自分类Dev

在“ INSERT ON DUPLICATE KEY UPDATE”中,检测在指定插入值时是否使用默认值

来自分类Dev

Laravel update()方法产生'x没有默认值'错误

来自分类Dev

将UPDATE SQL与Drop&Add COLUMN替换为默认值?

来自分类Dev

NSFileProtectionKey的默认值

来自分类常见问题

MergeLatest的默认值

来自分类Dev

DateTimeOffset默认值

来自分类Dev

端口的默认值?

来自分类Dev

@TransactionAttribute的默认值

来自分类Dev

$ _POST []的默认值;

来自分类Dev

<选择>默认值

来自分类Dev

MergeLatest的默认值

来自分类Dev

C ++默认值

来自分类Dev

左侧的默认值

来自分类Dev

Ehcache默认值

来自分类Dev

字符的默认值?

来自分类Dev

DateTimeOffset默认值

来自分类Dev

ViewModel的默认值

来自分类Dev

PhysicsBody的默认值

来自分类Dev

恢复默认值

来自分类Dev

创建默认值

来自分类Dev

Liquibase:如何更改默认的PostgreSQL模式

来自分类Dev

Liquibase(changeLogSync,update,changeLogSyncSQL)不会创建表或插入数据