Перейти к содержимому

Как удалить foreign key postgresql

  • автор:

Как удалить связь между таблицами sql

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

Вот пример SQL запроса для удаления внешнего ключа «fk_column» из таблицы «my_table» :

ALTER TABLE my_table DROP CONSTRAINT fk_column; 

В этом примере оператор ALTER TABLE используется для изменения таблицы «my_table» , а ключевое слово DROP CONSTRAINT указывает на то, что необходимо удалить внешний ключ из таблицы.

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

Как удалить foreign key postgresql

Для связи между таблицами применяются внешние ключи. Внешний ключ устанавливается для столбца из зависимой, подчиненной таблицы (referencing table), и указывает на один из столбцов из главной таблицы (referenced table). Как правило, внешний ключ указывает на первичный ключ из связанной главной таблицы.

Общий синтаксис установки внешнего ключа на уровне столбца:

REFERENCES главная_таблица (столбец_главной_таблицы) [ON DELETE ] [ON UPDATE ]

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

Общий синтаксис установки внешнего ключа на уровне таблицы:

FOREIGN KEY (стобец1, столбец2, . столбецN) REFERENCES главная_таблица (столбец_главной_таблицы1, столбец_главной_таблицы2, . столбец_главной_таблицыN) [ON DELETE ] [ON UPDATE ]

Например, определим две таблицы и свяжем их посредством внешнего ключа:

CREATE TABLE Customers ( Id SERIAL PRIMARY KEY, Age INTEGER, FirstName VARCHAR(20) NOT NULL ); CREATE TABLE Orders ( Id SERIAL PRIMARY KEY, CustomerId INTEGER REFERENCES Customers (Id), Quantity INTEGER );

Здесь определены таблицы Customers и Orders. Customers является главной и представляет клиента. Orders является зависимой и представляет заказ, сделанный клиентом. Эта таблица через столбец CustomerId связана с таблицей Customers и ее столбцом Id. То есть столбец CustomerId является внешним ключом, который указывает на столбец Id из таблицы Customers.

Определение внешнего ключа на уровне таблицы выглядело бы следующим образом:

CREATE TABLE Customers ( Id SERIAL PRIMARY KEY, Age INTEGER, FirstName VARCHAR(20) NOT NULL ); CREATE TABLE Orders ( Id SERIAL PRIMARY KEY, CustomerId INTEGER, Quantity INTEGER, FOREIGN KEY (CustomerId) REFERENCES Customers (Id) );

ON DELETE и ON UPDATE

С помощью выражений ON DELETE и ON UPDATE можно установить действия, которые выполняются соответственно при удалении и изменении связанной строки из главной таблицы. Для установки подобного действия можно использовать следующие опции:

  • CASCADE : автоматически удаляет или изменяет строки из зависимой таблицы при удалении или изменении связанных строк в главной таблице.
  • RESTRICT : предотвращает какие-либо действия в зависимой таблице при удалении или изменении связанных строк в главной таблице. То есть фактически какие-либо действия отсутствуют.
  • NO ACTION : действие по умолчанию, предотвращает какие-либо действия в зависимой таблице при удалении или изменении связанных строк в главной таблице. И генерирует ошибку. В отличие от RESTRICT выполняет отложенную проверку на связанность между таблицами.
  • SET NULL : при удалении связанной строки из главной таблицы устанавливает для столбца внешнего ключа значение NULL.
  • SET DEFAULT : при удалении связанной строки из главной таблицы устанавливает для столбца внешнего ключа значение по умолчанию, которое задается с помощью атрибуты DEFAULT. Если для столбца не задано значение по умолчанию, то в качестве него применяется значение NULL.

Каскадное удаление

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

CREATE TABLE Orders ( Id SERIAL PRIMARY KEY, CustomerId INTEGER, Quantity INTEGER, FOREIGN KEY (CustomerId) REFERENCES Customers (Id) ON DELETE CASCADE );

Аналогично работает выражение ON UPDATE CASCADE . При изменении значения первичного ключа автоматически изменится значение связанного с ним внешнего ключа. Но так как первичные ключи, как правило, изменяются очень редко, да и с принципе не рекомендуется использовать в качестве первичных ключей столбцы с изменяемыми значениями, то на практике выражение ON UPDATE используется редко.

Установка NULL

При установки для внешнего ключа опции SET NULL необходимо, чтобы столбец внешнего ключа допускал значение NULL:

CREATE TABLE Orders ( Id SERIAL PRIMARY KEY, CustomerId INTEGER, Quantity INTEGER, FOREIGN KEY (CustomerId) REFERENCES Customers (Id) ON DELETE SET NULL );

Установка значения по умолчанию

CREATE TABLE Orders ( Id SERIAL PRIMARY KEY, CustomerId INTEGER DEFAULT 1, Quantity INTEGER, FOREIGN KEY (CustomerId) REFERENCES Customers (Id) ON DELETE SET DEFAULT );

Если для столца значение по умолчанию не задано через параметр DEFAULT, то в качестве такового используется значение NULL (если столбец допускает NULL).

Drop a Foreign Key SQL Server

В этом учебном пособии вы узнаете, как удалять внешний ключа в SQL Server (Transact-SQL) с синтаксисом и примерами.

Описание

После создания foreign key, вам может быть понадобится удалить foreign key из таблицы. Вы можете сделать это с помощью оператора ALTER TABLE в SQL Server (Transact-SQL).

Синтаксис

Синтаксис удаления внешнего ключа в SQL Server (Transact-SQL):

ALTER TABLE table_name
DROP CONSTRAINT fk_name;

Параметры или аргументы

table_name — имя таблицы, в которой был создан внешний ключ.
fk_name — имя внешнего ключа, который вы хотите удалить.

Пример

Рассмотрим пример того, как удалить внешний ключ в SQL Server (Transact-SQL).
Например, если вы создали внешний ключ следующим образом:

Transact-SQL
CREATE TABLE products
( product_id INT PRIMARY KEY ,
product_name VARCHAR ( 50 ) NOT NULL ,
category VARCHAR ( 25 )
CREATE TABLE inventory
( inventory_id INT PRIMARY KEY ,
product_id INT NOT NULL ,
quantity INT ,
min_level INT ,
max_level INT ,
CONSTRAINT fk_inv_product_id
FOREIGN KEY ( product_id )
REFERENCES products ( product_id )

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

Затем мы создали вторую таблицу под названием inventory , которая в этом примере внешнего ключа будет дочерней таблицей. Мы использовали оператор CREATE TABLE для создания внешнего ключа fk_inv_product_id в таблице inventory . Внешний ключ устанавливает связь между столбцом product_id в таблице inventory и столбцом product_id в таблице products .

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

How to drop a foreign key constraint in PostgreSQL

How to drop a foreign key constraint in PostgreSQL

If you’re working with databases in PostgreSQL, you may have come across a situation where you need to remove a foreign key constraint. Perhaps you accidentally created the constraint, or maybe you need to make a change to your schema. Whatever the reason, in this post, I’ll show you how to drop a foreign key constraint in PostgreSQL.

�� Check out our easy to use desktop GUI for SQL

Beekeeper Studio is a truly cross-platform SQL GUI with a clean, uncluttered interface. Write SQL, edit data, alter tables, and more!

Available for MacOS, Linux, and Windows.

What is a Foreign Key Constraint?

A foreign key constraint is a way to enforce referential integrity in a database. It creates a link between two tables, such that a record in one table can only refer to a record in another table if that record exists. For example, if you have a table of customers and a table of orders, you might want to ensure that every order has a corresponding customer. You would do this by creating a foreign key constraint on the customer_id column in the orders table, which references the id column in the customers table.

How to Drop a Foreign Key Constraint in PostgreSQL

To drop a foreign key constraint in PostgreSQL, you’ll need to use the ALTER TABLE command. This command allows you to modify the structure of a table, including removing a foreign key constraint. Here’s an example of how to drop a foreign key constraint:

ALTER TABLE orders DROP CONSTRAINT fk_orders_customers; 

In this example, the constraint fk_orders_customers is being dropped from the orders table. The name of the constraint is the one you specified when you created the constraint, so make sure you use the correct name.

Conclusion

Dropping a foreign key constraint in PostgreSQL is a straightforward process, but it’s important to understand what you’re doing. Make sure you have a backup of your database before making any changes, and test your changes in a development environment before applying them to a production database.

With the right tools and a little bit of know-how, you can easily drop a foreign key constraint in PostgreSQL and make changes to your schema as needed. Happy coding!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *