2015-11-23 4 views
-2

Иногда, когда вы пытаетесь удалить строку в таблице на SQL-сервере, вы получаете ошибку, поскольку эта строка действует как внешний ключ в другой таблице.Обнаружение конфликтов внешнего ключа

Как я обнаружить это в Visual Studio 2013, когда я выполнить команду удаления в моей форме

+3

Пожалуйста, покажите код, но я бы рискнул попробовать {} catch {} aqnd, улавливая соответствующее исключение SQL – 3dd

+0

@ 3dd, было бы лучше, если бы OP проверил свои проверки в «Сохраненной процедуре или Query», проверяя 'sys.foreign_keys', если он существует, и не может удалить, если это произойдет не существует. Затем продвигайтесь вперед с удалением. – MethodMan

+0

Правильный способ справиться с этим будет ... знать ваши данные, знать данные, которые вы кодируете. Ваше приложение должно знать, какие данные зависят друг от друга, и удалять все в соответствии с правилами, подразумеваемыми данными. Что вы собираетесь делать, если ограничение внешнего ключа запрещает вам удалять данные? вы должны ответить на этот вопрос, прежде чем пытаться обойти его. –

ответ

0

Вы можете не только выполнять и или выполнить/хранимую процедуру запроса, чтобы проверить следующее

IF NOT EXISTS (SELECT name 
    FROM sys.foreign_keys 
    WHERE name = 'FK_Name') 

//do some work or your Deleting etc... 
+0

Наличие ограничения внешнего ключа не указывает на то, что удаление завершится неудачно. Это может указывать на то, что есть вероятность, что он потерпит неудачу, но не будет этого или нет. –

Смежные вопросы