我正在放置一張表,用於將後續消息發送到某些信息請求。一個請求被髮送給一組人並且跟蹤響應。如果一個人沒有迴應,可能會發送零或更多的跟進信息。我創建了一個表格:在交易過程中禁用約束條件
FollowupId int primary key,
RequestId int foreign key (outside this example),
Follows int foreign key (FollowupId),
Message varchar
如果消息是第一個後續消息,則Follows將爲空。否則,這是其他一些跟進的ID。我還爲Follows添加了一個獨特的約束。也就是說,只有一條消息可以跟隨任何給定的消息。
編輯:我還應該強調關注的外鍵。它在此表中引用了FollowupId。所以如果A-> B-> C,只是刪除B使得C中的外鍵無效。同樣,僅僅更新C來跟隨A是不可能的,因爲B已經在A之後,並且唯一約束禁止重複。
問題是,當然,刪除後續條目現在很難,如果該消息跟着另一條。在我看來,應該可以禁用約束檢查,以便可以刪除中間的後續操作,「向上移動」後續跟蹤,然後重新啓用檢查。是否有某種方法可以僅在事務處理期間禁用約束? (另外,我知道在這個表中有RequestId可能會導致數據不一致,最好有Followups [FollowupId,Message],InitialFollowups [FollowupId,RequestId]和FollowingFollowups [FollowupId,Follows ]表,我認爲它不必要地使這個例子變複雜了。)