【发布时间】:2021-10-05 21:31:00
【问题描述】:
大家好,我对 Liquibase 有一些疑问
我创建了一个带有经典变更集的表 (PostgreSQL)
<changeSet id="create_table">
<createTable tableName="table" schemaName="schema">
<column name="name" type="varchar">
<constraints nullable="false"/>
</column>
<column name="surname" type="varchar">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
我已经在此表中添加了一些数据。 我想添加一个新列 'id' 并将其作为主键作为自动增量列。 我该怎么做?
因为如果我尝试添加这样的变更集:
<changeSet id="added_pk">
<addColumn tableName="table"
schemaName="schema">
<column name="id" type="bigint">
<constraints unique="true" nullable="false" uniqueConstraintName="PK_TABLE_ID"/>
</column>
</addColumn>
<addAutoIncrement columnDataType="bigint"
columnName="id"
tableName="table"
schemaName="schema"
incrementBy="1" startWith="1"/>
</changeSet>
运行脚本时出现错误:“关系“表”的“id”列包含空值”。 这取决于已经存在的值。我该如何处理这种情况? (我宁愿避免在添加新列之前截断所有数据)
非常感谢! 问候
【问题讨论】:
标签: postgresql liquibase auto-increment