0
因此,我在liquibase中創建了一個名爲tv_campaigns
的表,如下所示。無法添加非主鍵標識列
<changeSet id=" add tv campaigns table" author="abc">
<createTable tableName="tv_campaigns">
<column name="campaign_id" type="int" autoIncrement="false">
<constraints primaryKey="true"
foreignKeyName="fk_linear_tv_campaign_id"
references="campaigns(id)"
nullable="false"/>
</column>
</createTable>
</changeSet>
這裏的主鍵和外鍵是相同的(campaign_id),表中只有一列。 後來我意識到,我在此表中需要一個自動增量列,並着手添加此變更:
<changeSet id="add auto increment column" author="abc">
<addColumn tableName="tv_campaigns">
<column name="id" type="int" autoIncrement="true">
<constraints unique="true"
nullable="false"/>
</column>
</addColumn>
</changeSet>
在運行這個變更我得到以下錯誤:"Cannot add a non-primary key identity column"
。嘗試通過刪除舊的主鍵(campaign_id)來添加'id'作爲主鍵,並且這也引發了關於未正確定義的外鍵關係的錯誤(因爲原始主鍵也引用了另一個表的鍵)。
有沒有辦法很好地做到這一點或做到這一點?
爲什麼不先從campaign_id中刪除FK約束,然後從tv_campaigns中刪除主鍵,然後將主鍵設置爲id列,並在外鍵之後使用campaign_id? – dbf