Как удалить строки, которые не соответствуют внешнему ключу, который я хочу представить - PullRequest
1 голос
/ 06 июня 2011

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

Есть ли простой трюк, который удаляет данные, которые противоречат этому ограничению?

Ответы [ 3 ]

2 голосов
/ 06 июня 2011

Это был бы один из способов сделать это

SQL Script

BEGIN TRAN

DELETE FROM Detail    
OUTPUT DELETED.*  -- Verification
FROM   Detail d
       LEFT OUTER JOIN Master m ON m.PK = d.FK
WHERE  m.PK IS NULL

ROLLBACK TRAN -- Change to commit when verified.
1 голос
/ 06 июня 2011

вам нужно вручную удалить все строки, которые не соответствуют ограничениям: возможно, вам понадобится оператор T-SQL, чтобы получить все строки, которые нужно удалить (возможно, с использованием внешнего соединения), а затем удалить их

0 голосов
/ 06 июня 2011

Вы можете идентифицировать оскорбительные данные по этому запросу:

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS
...