2016-05-20 3 views
0

Я пытаюсь удалить строки из таблицы в SQL Server 2008 с ни ограничениями внешнего ключа, ни любыми триггерами. Когда я проверяю раздел сообщения, он показывает затронутые строки, но когда я проверяю таблицу, строки все еще присутствуют. Прикреплено изображение для справки. Я очень уверен, что нет никаких ограничений для этой таблицы. В чем может быть проблема?Невозможно удалить строку в таблице без ограничений внешнего ключа

enter image description here

+0

, что ограничение вы имеете в виду. Пожалуйста, укажите ограничение – PyNoob

+0

(я не вижу изображение, srry) Вы уверены, что удаляете и выбираете из той же таблицы? (Та же самая база данных/одна и та же схема) – mxix

+0

первичные/внешние ключи или ограничения по умолчанию. – whywake

ответ

0

Вы можете использовать систа таблицу для запроса constrints, ключи и т.д. Основываясь на этих результатах, вы можете удалить из таблицы. Ниже приведен пример запроса, который возвращает ограничения таблицы.

SELECT 
    TableName = t.Name, 
    ColumnName = c.Name, 
    dc.type, 
    dc.type_desc, 
    dc.name, 
    dc.definition 
FROM sys.tables t 
INNER JOIN sys.default_constraints dc ON t.object_id = dc.parent_object_id 
INNER JOIN sys.columns c ON dc.parent_object_id = c.object_id AND c.column_id = dc.parent_column_id 
where t.name = 'yourtablename' 
ORDER BY t.Name 
0

Если действительно нет триггера на столе вы удаляете из, а затем изучить все связанные таблицы, которые имеют FKs к таблице вы удаляете из (и, в свою очередь, всех FKs в этих таблицы). У FKs было бы установлено ON DELETE CASCADE так, чтобы удаление фактически работало (вместо того, чтобы бросать ошибку), только триггер в любой из этих таблиц FK-поддержки мог бы сразу повторно добавить строки.

Вы не обязательно видеть rows affected сообщение для всех этих возможных операций запуска, так как триггеры могут установить SET NOCOUNT ON, прежде чем делать какие-либо DML ...

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