SQL Server, FK: проверка в (1) стороне NoCheck в (много) стороне

Предположим, у меня есть таблица ActiveCustomers с некоторыми FK (например, CountryID), и у меня также есть NonActiveCustomers с теми же FK. Когда я вставляю новую строку в ActiveCustomers - система должна проверить сторону "1" (от 1:N), чтобы убедиться, что CountryID (или любой другой) существует. Когда я перемещаю строку из ActiveCustomers в NonActiveCustomers - мне не нужно, чтобы система проверяла это снова, потому что это уже было сделано, когда линия была первоначально вставлена ​​в ActiveCustomers. В этом случае я могу создать ограничение Check FK для ActiveCustomers и ограничение NoCheck FK для NonActiveCustomers; но проблема в том, что когда я удаляю строки из боковой таблицы "1" (Страны), я хочу, чтобы система проверила в обеих таблицах "N", что операция разрешена: я не хочу, чтобы там были потерянные строки. Как я могу это сделать? Nocheck отключает все проверки при вставках в NonActiveCustomers и при удалении и обновлении (в странах), даже если я указываю явно: "Удалить - нет действия" - "Обновить - нет действия". Конечно, я могу создать триггер для стран, чтобы проверить правильность удаления или обновления, но есть ли способ сделать это с помощью механизма ограничений?

0 ответов

Другие вопросы по тегам