我在向SQL Server中的外鍵添加級聯刪除時遇到問題。表A有三列。表A中的第1列和第2列是對錶B中同一列的外鍵查找。我希望刪除表B中的一行,以基於這些外鍵對錶A上的行上的刪除進行級聯。SQL Server外鍵引起週期或多個級聯路徑
表A中的另一列有一個外鍵查找表C.如果表C中的行被刪除,那麼我想對應的單元格設置爲空表A
當我加入這些限制我引發了錯誤:
引入表'RelatedDeliverableUnit'上的FOREIGN KEY約束'FK_RDU_TODELIVERABLEUNITREF'可能會導致循環或多個級聯路徑。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY約束。
我對此有點堅持,Oracle似乎對這個邏輯非常滿意。我使用Liquibase添加了這些限制。我認爲錯誤是記在我的邏輯,而不是語法,但爲了完整性這裏是管理外鍵liquidbase腳本:
<addForeignKeyConstraint constraintName="FK_RDU_FROMDELIVERABLEUNITREF" baseTableName="relatedDeliverableUnit"
baseColumnNames="FROMDELIVERABLEUNITREF" referencedTableName="DELIVERABLEUNIT" referencedColumnNames="DELIVERABLEUNITREF" onDelete="CASCADE"/>
<addForeignKeyConstraint constraintName="FK_RDU_TODELIVERABLEUNITREF" baseTableName="relatedDeliverableUnit"
baseColumnNames="TODELIVERABLEUNITREF" referencedTableName="DELIVERABLEUNIT" referencedColumnNames="DELIVERABLEUNITREF" onDelete="CASCADE"/>
<addForeignKeyConstraint constraintName="FK_RDU_RELATIONSHIPREF"
baseTableName="relatedDeliverableUnit" baseColumnNames="RELATIONSHIPREF" referencedTableName="RELATIONSHIPTYPES" referencedColumnNames="RELATIONSHIPREF" onDelete="SET NULL"/>
預先感謝任何幫助
謝謝你的建議。我也想知道添加這是一個單一的外鍵,兩列查找相同的引用列,但我不確定這是否允許。我得看看我猜的觸發器! – Fraser