Liquibase - 更改 table 的外键删除类型
Liquibase - change on delete type of foreign key for a table
是否可以在 liquibase 中将删除方法中的外键从 NO ACTION
更改为 SET NULL
?
是的,这是可能的。 <addForeignKeyConstraint>
中有 onDelete
属性,您可以将其设置为:
- 级联
- 设置为空
- 设置默认值
- 限制
- 无操作
如果您已经有一个外键,那么您可以删除现有的约束并使用您需要的设置重新创建它。
<changeSet id="changeset-id" author="changeset-author">
<preConditions onFail="MARK_RAN">
<foreignKeyConstraintExists foreignKeyName="fk_foo_bar"/>
</preConditions>
<dropForeignKeyConstraint baseTableName="table_foo" constraintName="fk_foo_bar"/>
<addForeignKeyConstraint baseTableName="table_foo" baseColumnNames="foo_col"
constraintName="fk_foo_bar"
referencedTableName="table_bar" referencedColumnNames="bar_col"
onDelete="SET NULL"/>
</changeSet>
是否可以在 liquibase 中将删除方法中的外键从 NO ACTION
更改为 SET NULL
?
是的,这是可能的。 <addForeignKeyConstraint>
中有 onDelete
属性,您可以将其设置为:
- 级联
- 设置为空
- 设置默认值
- 限制
- 无操作
如果您已经有一个外键,那么您可以删除现有的约束并使用您需要的设置重新创建它。
<changeSet id="changeset-id" author="changeset-author">
<preConditions onFail="MARK_RAN">
<foreignKeyConstraintExists foreignKeyName="fk_foo_bar"/>
</preConditions>
<dropForeignKeyConstraint baseTableName="table_foo" constraintName="fk_foo_bar"/>
<addForeignKeyConstraint baseTableName="table_foo" baseColumnNames="foo_col"
constraintName="fk_foo_bar"
referencedTableName="table_bar" referencedColumnNames="bar_col"
onDelete="SET NULL"/>
</changeSet>