2017-01-26 5 views
0

В настоящее время я работаю над проектом db, и я регулярно обновляю базу данных. Моя проблема в том, что я не могу обрезать таблицу, хотя ни одна таблица не ссылается на нее. Это позволяет предположить, что таблица y и таблица z зависят от поля в таблице x. Я могу обрезать таблицу y и таблицу z, но не могу обрезать таблицу x, даже если таблица y и таблица z пусты. Я использую SQL Server. Не могли бы вы дать мне понять, почему это происходит и обеспечить решение? Благодарю. (Я искал Google, но не смог найти решение.)Не удается обрезать ссылочную таблицу

Редактировать: Позвольте мне также указать, что даже если я опустошил таблицу x (используя удаление из таблицы x), я все равно не могу ее усечь.

+0

, что Ваше сообщение об ошибке? – Esperento57

+0

@ esperento57 Сообщение об ошибке: «Не удается обрезать таблицу« x », потому что на нее ссылается ограничение FOREIGN KEY. ' – tempx

+0

На самом деле администраторы баз данных могут использовать внешние ключи в качестве защиты для команды Truncate Table против потерь данных: http://www.kodyaz.com/t-sql/prevent-truncate-table-on-sql-server-database-using-foreign -key-constraint.aspx – Eralper

ответ

2

Это по дизайну.

Если вы хотите, чтобы усечь таблицу затем

  1. Прежде всего, необходимо отбросить foreign key ограничения вашей усечь таблицу
  2. Run truncate команда
  3. воссоздает foreign key ТРУДНОСТИ
+0

Какова логика этого @prdp? Несмотря на то, что все таблицы пустые, почему я не могу обрезать таблицы? – tempx

+1

@tempx - Truncate - это команда 'DDL', в отличие от' delete', она не может проверить данные, присутствующие в дочерних таблицах. Вот как я образован;) какая-то другая причина может быть там –

+0

, если вы используете «удалить из», а не «усекать»? – Esperento57