Почему я не могу усечь таблицу, на которую ссылается ограничение FK? - PullRequest
2 голосов
/ 06 октября 2011

Поэтому я пытаюсь понять, почему SQL Server 2008 R2 жалуется, когда я пытаюсь усечь таблицу.

У меня есть 2 таблицы:

  • Parent (id, ..)
  • Child (id, parent_id, ..)

Дочерняя таблица как ограничение FK (parent_id) для таблицы Parent.

Теперь, если я попытаюсь сделать:

truncate table Child
truncate table Parent

Это дает мне ошибку:

не может усечь таблицу 'Parent', поскольку на нее ссылается ограничение FK.

Даже еслиЯ удаляю обе таблицы, т. Е. Таблицы пусты, я не могу обрезать таблицу Parent.

Почему это так?

Ответы [ 2 ]

2 голосов
/ 06 октября 2011

Усечение больше похоже на удаление и повторное создание таблицы, чем на удаление содержимого.Он не выполняет проверки и т. Д. И поэтому запрещается, если очистка данных может нарушить какие-либо ограничения.

0 голосов
/ 06 октября 2011

Усечением является DDL, а не DML.

Итак, если вы усекаете таблицу, вы говорите базе данных удалить таблицу и воссоздать ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...