Mysql InnoDB Ограничения внешнего ключа
Провел эксперимент. С foreign key в MySQL. Ранее я думал, что в MySQL нет ограничений на внешние ключи, но выяснилось, что есть. Для использования ограничений внешнего ключа используется такой синтаксис:
[CONSTRAINT symbol] FOREIGN KEY (index_col_name, ...)
REFERENCES table_name (index_col_name, ...)
[ON DELETE CASCADE | ON DELETE SET NULL]
В конечном итоге все выглядит так:
При отсутствии или удалении кортежа из table1 соответствующий кортеж из таблицы table2 так же будет удален.
Важная часть выражения — «on delete cascade». кортеж будет УДАЛЕН. Если заменить на «on delete set null» то, указатель будет установлен в null.
[CONSTRAINT symbol] FOREIGN KEY (index_col_name, ...)
REFERENCES table_name (index_col_name, ...)
[ON DELETE CASCADE | ON DELETE SET NULL]
В конечном итоге все выглядит так:
create table table1 (id int not null auto_increment, name char(20), primary key (id)) type=innodb;
create table table2 (id int auto_increment primary key, table1_id, foreign key (table1_id) references table1(id) on delete cascade) type=innodb;
При отсутствии или удалении кортежа из table1 соответствующий кортеж из таблицы table2 так же будет удален.
Важная часть выражения — «on delete cascade». кортеж будет УДАЛЕН. Если заменить на «on delete set null» то, указатель будет установлен в null.
Комментарии
Отправить комментарий