Если у вас есть PK, которые меняются, вам нужно взглянуть на дизайн таблицы, использовать суррогатный PK, как личность.
В вашем вопросе у вас есть таблица Person
, которая может быть FK для многих таблиц. В этом случае у ON UPDATE CASCADE
могут возникнуть серьезные проблемы. База данных, над которой я работаю, насчитывает более 300 ссылок (FK) на нашу эквивалентную таблицу, мы отслеживаем всю различную работу, которую человек выполняет в каждой отдельной таблице. Если я вставлю строку в нашу таблицу Person, а затем попытаюсь снова удалить ее (она не будет использоваться в других таблицах, она новая), то при удалении произойдет ошибка Msg 8621, Level 17, State 2, Line 1 The query processor ran out of stack space during query optimization. Please simplify the query.
. ON UPDATE CASCADE
будет работать, когда вы получите много ПК на вашем ПК.
Я бы никогда не сделал конфиденциальные данные, такие как SSN, PK. Медицинские компании раньше делали это и имели болезненный переход из-за конфиденциальности. Я надеюсь, что у вас нет веб-приложения и есть переменная GET или POST с именем SSN с фактическим значением в нем !! Или отображать SSN в каждом отчете, или вы уничтожите все старые печатные отчеты и ограничите доступ к просмотру каждого отчета и т. Д.