当前位置: 首页 > 知识库问答 >
问题:

LIQUIBASE:我有一个4列的表,我想添加另一个名为UUID的列,如何为现有对象生成匹配javaUUID的值?

仲孙俊贤
2023-03-14

我有一个有4列的表。我想添加另一个名为UUID的列。如何为现有对象生成匹配javaUUID的值?例如当前数据库状态:

ID NAME   AGE GENDER
1  Arnold 12   MALE
2  Keith  14   MALE

当我添加UUID列时:

ID NAME   AGE GENDER UUID
1  Arnold 12   MALE  Null
2  Keith  14   MALE  Null

我想要的是:

ID NAME   AGE GENDER UUID
1  Arnold 12   MALE  "70f3c2d0-b5b9-11ec-b909-0242ac120002"
2  Keith  14   MALE  "70f3c528-b5b9-11ec-b909-0242ac120002"

共有1个答案

司徒池暝
2023-03-14

首先,我不建议将数据库列命名为uuid,因为它在某些数据库中可能是一个保留字。我推荐一些类似于table\u name\u key的东西。

关于你的问题,逻辑如下:

<changeSet author="foo" id="bar_1">
    <preConditions onFail="MARK_RAN">
        <tableExists tableName="your_table"/>
        <not>
            <columnExists tableName="your_table" columnName="your_table_key"/>
        </not>
    </preConditions>
    <comment>Add your_table_key column to your_table table.</comment>
    <addColumn tableName="your_table">
        <column name="your_table_key" type="varchar(36)"/>
    </addColumn>
</changeSet>    

<changeSet author="foo" id="bar_2">
    <preConditions onFail="MARK_RAN">
        <columnExists tableName="your_table" columnName="your_table_key"/>
    </preConditions>
    <comment>Populate your_table.your_table_key values.</comment>
    <update tableName="your_table">
        <column name="your_table_key" valueComputed="uuid()"/>
    </update>
</changeSet>

<changeSet author="foo" id="bar_3">
    <preConditions onFail="MARK_RAN">
        <columnExists tableName="your_table" columnName="your_table_key"/>
    </preConditions>
    <comment>Populate your_table.your_table_key values.</comment>
    <update tableName="your_table">
        <column name="your_table_key" valueComputed="uuid()"/>
    </update>
</changeSet>

<changeSet id="foo" author="bar_4">
    <preConditions onFail="MARK_RAN">
        <columnExists tableName="your_table" columnName="your_table_key"/>
        <not>
            <indexExists indexName="idx_your_table_key_unique"/>
        </not>
    </preConditions>
    <comment>Add unique constraint to your_table.your_table_key</comment>
    <addUniqueConstraint tableName="your_table" columnNames="your_table_key"
                         constraintName="idx_your_table_key_unique"/>
</changeSet>

<changeSet id="foo" author="bar_5">
    <preConditions onFail="MARK_RAN">
        <columnExists tableName="your_table" columnName="your_table_key"/>
    </preConditions>
    <comment>Add not null constraint to your_table.your_table_key</comment>
    <addNotNullConstraint tableName="your_table" columnName="your_table_key"
                          columnDataType="varchar(36)"/>
</changeSet>
 类似资料:
  • 我想要列列表和它的表名在数据库中的列具有所有空值。 此表太大,有些列只有空值。 我想要一个存储过程,列出表中没有任何数据的列(即NULL)。 这样我就可以削减列的数量。 我只是展示了几个专栏,这样你就可以阅读了。原始表有324列和数百万行数据。对于该代码来说,性能不是一个紧迫的问题。我需要这个只是为了内部目的。 这是mysql解决方案,我需要一个SQL服务器解决方案

  • 我有一个活动选项卡的自动播放选项卡类current,这意味着当选项卡是活动的时,列表项有一个名为current的类。 现在我要向第一个子 添加不同的类 null null

  • 我有一个正在测试的方法,它返回一个对象列表。。。例如“Person”对象。 我有一个“预期的最后名字”列表来验证结果。 我目前有一个工作测试,它循环遍历“expectedLastNames”中的名称,并断言每个名称都包含在“Person”对象列表中。与此类似(请注意,以下代码段位于Kotlin中): 当断言通过时,这非常有效,并验证了我的方法。然而,当测试失败时,这是非常麻烦的,因为一旦遇到缺少的

  • 我在从一个表中插入一个列的值作为另一个表中的列时遇到了麻烦。我在col1中有一些值的表A:和另一个列等于col1值的表B。 我想把表A,col1中的其余值添加为表B中的列。请帮助我解决我的问题。我正在使用SQL server 2012。

  • 例如,它将以1开始,然后将2添加到列表中,得到1-2。然后将检查1-2以查看序列是否符合递增/递减的规则。当它符合时,将3相加,得到1-2-3。然后检查1-2-3,这不符合。所以我们会回到1,现在加3而不是2,给出1-3等等。 我在用C。

  • 我使用的是Laravel5.5,我想在一个名为的现有表中添加一个额外的列。 问题是,没有添加额外的列。 1) 因为桌子不是空的,有可能吗? 2)为什么下面的代码块不起作用? 通过运行创建一个文件: