Heloo,
Я только начинаю с yii2 и postgresql. У меня проблема:
Первая таблица:
tbl_printer (PK dept_id and id)
| dept_id | id | name |
Вторая таблица
tbl_printer_group (PK dept_id and id)
| dept_id | id | printer1 | printer2 | printer3 |
printer1
, printer2
, printer3
данные/значение от tbl_printer.id
Я хочу, чтобы "УДАЛИТЬСЯ ОТКАЗЫВАТЬ" tbl_printer
IF printer (id) STILL IN USE в tbl_printer_group
(принтер1, принтер2, принтер3). Если не правильный внешний ключ, один к одному от родителя к ребенку, но этот для многих.
Как решить эту проблему, я использую php, yii2 и postgresql.
Спасибо и извините за мой английский
Внешний ключ добавляется посредством миграции с помощью метода addForeignKey():
$this->addForeignKey(
'name_of_foreign_key_constraint',
'products',
'category_id',
'products_categories',
'id',
'CASCADE',
'CASCADE'
);
Последние два варианта: ON UPDATE
и ON DELETE
соответственно.
Большинство СУБД поддерживают следующие параметры:
RESTRICT
,CASCADE
,NO ACTION
,SET DEFAULT
,SET NULL
.
Обратите внимание, что вы можете указать массивы вместо столбцов category_id
и id
:
Если имеется несколько столбцов, разделите их запятыми или используйте массив.
Framework предоставляет наиболее часто используемые и необходимые для этого методы, но помните, что вы всегда можете выполнять собственный SQL-код внутри миграции только с записью:
$this->execute('YOUR CUSTOM SQL QUERY');