Drop a Foreign Key SQLite

В этом учебном пособии вы узнаете, как удалить foreign key в SQLite с синтаксисом и примерами.

Описание

После создания внешнего ключа вам может понадобиться удалить внешний ключ из таблицы. Давайте рассмотрим, как это сделать.

Подсказка: Вы не можете удалить внешний ключ, используя ALTER TABLE, потому что SQLite не поддерживает DROP CONSTRAINT в операторе ALTER TABLE. Однако в этом руководстве мы покажем вам альтернативный путь, который позволит вам удалить внешний ключ в существующей таблице.

Как удалить внешний ключ таблицы

Вы не можете использовать оператор ALTER TABLE для удаления внешнего ключа в SQLite. Вместо этого вам нужно будет переименовать таблицу, создать новую таблицу без внешнего ключа, а затем скопировать данные в новую таблицу.

Синтаксис

Синтаксис для удаления внешнего ключа в SQLite:

PRAGMA foreign_keys=off;

BEGIN TRANSACTION;

ALTER TABLE table1 RENAME TO _table1_old;

CREATE TABLE table1
(
column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
...
);

INSERT INTO table1 SELECT * FROM _table1_old;

COMMIT;

PRAGMA foreign_keys=on;

Пример

Если вы создали внешний ключ в SQLite следующим образом:

В этом примере мы создали первичный ключ в таблице departments, который состоит только из одного поля - поля department_id. Затем мы создали внешний ключ с именем fk_departments в таблице employees, который ссылается на таблицу departments на основании поля department_id.

Если затем мы хотим удалить внешний ключ с именем fk_departments, мы можем выполнить следующую команду:

Этот пример переименует нашу существующую таблицу employees в _employees_old. Затем он создаст новую таблицу employees без внешнего ключа. Затем он вставит все данные из таблицы _employees_old в таблицу employees.

Этот альтернативный путь позволяет удалить внешний ключ из таблицы employees, не теряя данные в таблице.