Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Добавление, удаление ограничения FOREING KEY
- Удаление ограничения внешнего ключа:
- ALTER table имя_таблицы DROP CONSTRAINT имя_ограничения;
- Добавление ограничения внешнего ключа в существую таблицу:
- ALTER table имя_таблицы ADD FOREIGN KEY (имя_атрибута_ссылающейся_таблицы) REFERENCES имя_главной_таблицы(имя_атрибута_главной_таблицы);
- -------------------------------------------------------------------------------------------------------
- Выражение ON DELETE и ON UPDATE опция CASCADE:
- CASCADE: автоматически удаляет или изменяет строки из зависимой таблицы при удалении или изменении связанных строк в главной таблице.
- Синтаксис:
- FOREIGN KEY (atribute_name_3) REFERENCES имя_главной_таблицы (атрибут_главной таблицы) ON DELETE CASCADE
- FOREIGN KEY (atribute_name_3) REFERENCES имя_главной_таблицы (атрибут_главной таблицы) ON UPDATE CASCADE
- После выражения REFERENCES может идти выражение ON DELETE и ON UPDATE, которые уточняют поведение при удалении или обновлении данных.
- Если при удалении строки из главной таблицы необходимо, чтобы были удалены все связанные строки из зависимой таблицы, то применяется каскадное удаление, то есть опция CASCADE.
- При удалениии значений (VALUES) из главной таблицы (referenced table), из колонки, на которую ссылается подчиненная таблица (referencing table).
- программа выдаст ошибку:
- ERROR: update or delete on table "products" violates foreign key constraint "orders_product_no_fkey" on table "orders"
- DETAIL: Key (product_no)=(0) is still referenced from table "orders".
- ОШИБКА: обновление или удаление в таблице "products" нарушает ограничение внешнего ключа "orders_product_no_fkey" в таблице "orders"
- ДЕТАЛИ: На ключ (product_no) = (0) все еще ссылаются из таблицы «заказы».
- ----------------------------------------------------------------------------
- Связь между таблицами.
- Виды связей(отношений):
- 1 Один к одному;
- 2 Одни ко многим;
- 3 Многие ко многим;
- Связь многие ко многим:
- Пример:
- CREATE TABLE products (
- product_no integer PRIMARY KEY,
- name text,
- price numeric
- );
- CREATE TABLE orders (
- order_id integer PRIMARY KEY,
- shipping_address text,
- telefon varchar
- );
- CREATE TABLE order_items (
- product_no integer REFERENCES products,
- order_id integer REFERENCES orders,
- quantity integer,
- PRIMARY KEY (product_no, order_id)
- );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement