Усечение таблицы, на которую ссылается внешний ключ - PullRequest
0 голосов
/ 08 марта 2010

У нас есть две таблицы в базе данных SQL Server 2005, A и B. Есть служба, которая усекает таблицу A каждый день.

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

Я уже попробовал подход ниже, но личность не была сброшена.

DBCC CHECKIDENT (TABLENAME, RESEED, 0)

PS. прежде чем кто-либо укажет на это как на дубликат, здесь дело в том, что мне не разрешается ни удалять ограничения, ни создавать какие-либо.

Ответы [ 3 ]

1 голос
/ 08 марта 2010

Если вы не можете удалить ограничение, вы не можете использовать TRUNCATE TABLE, поэтому вы должны использовать DELETE.

DELETE TABLEA
DBCC CHECKIDENT (TABLENAME, RESEED, 0)

Примечание: отключение FK также не будет работать

0 голосов
/ 21 сентября 2017

SET FOREIGN_KEY_CHECKS = 0; # MySQL возвратил пустой набор результатов (то есть ноль строк). - Отключить проверку внешнего ключа. TRUNCATE TABLE table_name; # MySQL вернул пустой набор результатов (то есть ноль строк). SET FOREIGN_KEY_CHECKS = 1; # MySQL вернул пустой набор результатов (то есть ноль строк). - Включить проверку внешнего ключа. # MySQL вернул пустой набор результатов (т. Е. Ноль строк).

0 голосов
/ 21 сентября 2017

Если вы хотите обрезать таблицу, на которую ссылается ограничение внешнего ключа

1-DISABLE related FK
2-TRUNCATE all related tables.
3-ENABLE the previously disabled FKs

SET FOREIGN_KEY_CHECKS = 0; -- Disable foreign key checking.
TRUNCATE TABLE Table1;
SET FOREIGN_KEY_CHECKS = 1; -- Enable foreign key checking.
...