1 回答
TA贡献1875条经验 获得超5个赞
这更像是一个数据库设计问题,而不是 Liquibase 问题,但这是我对此的想法。
您可能应该只向每个表添加一个整数或 UUID 列以用作代理主键。从长远来看,这将使你和任何追随你的人的事情变得更容易。然后始终使用该键作为外键关系。
如果您还希望数据库强制执行某些列组合对于数据库的每一行也必须是唯一的,您也可以这样做,但这是一个单独的问题。
如果您不想添加代理主键,则在第三个变更集中,您可以引用组成复合键的多个列名称,并用逗号分隔它们。它看起来像这样:
<changeSet id ="Create X_Y_REL table" author="Steve">
<createTable tableName="X_Y_REL">
<column name="Y_NAME" type="VARCHAR(50)">
<constraints nullable="false" referencedTableName="Y" referencedColumnNames="NAME"
foreignKeyName="XFK1X_Y_REL"/>
</column>
<column name="X_ID" type="VARCHAR(150)">
<constraints nullable="false" referencedTableName="X" referencedColumnNames="SERVICE,ACTION,TARGET"
foreignKeyName="XFK2_X_Y_REL"/>
</column>
</createTable>
</changeSet>
添加回答
举报