Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Штатная функция выявления использования конкретного значения первичного ключа во внешних  [new]
voix_kas
Member

Откуда:
Сообщений: 73
Есть две таблицы. Например:
1. справочник видов плодов: овощи/фрукты/ягоды.
2. реестр плодов: арбуз, картофель, яблоко.

В первой таблице есть первичный ключ (поле "id"), во второй - соответствующий внешний ключ.

Т.е. записываем во вторую таблицу:
ягода - арбуз
фрукт - яблоко
овощ - картофель

Допустим, есть намерение удалить строку из справочника, например, "овощ".
Перед транзакцией, я хочу знать, имеются ли в реестре какие-нибудь овощи. Если нет, могу удалять. Если есть, запрет.

Такую проверку можно выполнить "вручную", пройдясь по всем таблицам с соответствующим внешним ключом.

А есть ли в MS SQL (2012 (RC 0)) такая функция, которая самостоятельно (на основании имеющихся внешних ключей) ищет в таблицах-реципиентах упоминание конкретного значение первичного ключа в таблице-доноре и выдает соответствующий результат: строку в таблице-доноре/справочнике можно удалить без опасения каскадного удаления связанных данных в другой таблице.

Извиняюсь за тягомотину с формулировкой. :)
26 июл 12, 23:44    [12922387]     Ответить | Цитировать Сообщить модератору
 Re: Штатная функция выявления использования конкретного значения первичного ключа во внешних  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35396
Блог
http://msdn.microsoft.com/ru-ru/library/ms175464(v=sql.105).aspx
26 июл 12, 23:51    [12922414]     Ответить | Цитировать Сообщить модератору
 Re: Штатная функция выявления использования конкретного значения первичного ключа во внешних  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
FOREIGN KEY Constraints
26 июл 12, 23:54    [12922424]     Ответить | Цитировать Сообщить модератору
 Re: Штатная функция выявления использования конкретного значения первичного ключа во внешних  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35396
Блог
еще
http://msdn.microsoft.com/ru-ru/library/ms174979(v=sql.105).aspx
а конкретнее
msdn
| [ FOREIGN KEY ]
REFERENCES [ schema_name . ] referenced_table_name [ ( ref_column ) ]
[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
[ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]

[ NOT FOR REPLICATION ]
| CHECK [ NOT FOR REPLICATION ] ( logical_expression )
26 июл 12, 23:54    [12922425]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить