Предположим, у меня есть таблица Level1
:
Id int PK
Deleted bit
и еще один стол Level2
:
Id int
Deleted bit
Level1id int
Я могу добавить FK
к Level2
, чтобы сопоставить Level1id
с Level1.Id
. Это прекрасно работает, если родитель существует.
Однако что делать, если я хочу убедиться, что записи могут быть INSERTed
в Level2
, когда соответствующая запись в Level1
имеет Deleted
bit = 0?
Кроме того, как я могу предотвратить установку флага Deleted
в Level1
= 1, если у любых дочерних записей в Level2
есть Deleted
bit = 0?
т.е. все дочерние записи должны иметь Deleted
= 1, прежде чем родительская запись может иметь Deleted
= 1
Я предполагаю, что мне, возможно, придется написать Trigger, но я надеюсь, что есть более элегантное решение ...