как удалить строку, если в ней есть внешние ключи? sql

#mysql #sql #sql-server

#mysql #sql #sql-сервер

Вопрос:

например, если у вас есть эти строки

 create table table1 
(
column1 int primary key,
column2 varchar(50),
column3 varchar(50),
column4 varchar(50),
)

create table tabla2
(
col1 int primary key,
col2 int,
col3 varchar(50),
foreign key(col2) references table1(column1)
)
  

и, например, у меня есть строка

 insert into table1(column1,column2,column3,column4) values (1,'a','b','c');

insert into table2(col1,col2,col3) values (1,1,'xxx');
  

и я хочу удалить все эти строки (только их)

 delete from table1 where colum1=1; 
  

не работает,

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

Ответ №1:

 foreign key(col2) references table1(column1) on delete cascade
  

http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

Ответ №2:

Добавьте ON DELETE CASCADE к вашему ограничению внешнего ключа.

Комментарии:

1. как это? я никогда не слышал об этом

2. foreign key(col2) references table1(column1) on delete cascade

3. нет ли какой-нибудь другой простой формы? поскольку я не редактирую базу данных, мне друг сказал с кодом, удалите все связанные строки, я не знаю, что это за код @domsterr