Удалить строки DB, которые содержат ссылку на себяMySql

Форум по Mysql
Ответить
Anonymous
 Удалить строки DB, которые содержат ссылку на себя

Сообщение Anonymous »

I have some data:



id
parent_id
topic_id




1 < /td>
< /td>
1 < /td>
< /tr>

2 < /td>
1 < /td>
2 < /td>
1 < /td>
/> < /tr>

3 < /td>
< /td>
2 < /td>
< /tr>

4 < /td>
3 < /td>
< /td>
3 < /td>
/> < /tr>
< /tbody>
< /table> < /div>
parent_id имеет fk to id .
Я пытаюсь удалить данные с помощью TOMA_ID - Как вы видите, одна строка ссылается на другую строку, которая должна быть удалена. Но Иногда это терпит неудачу из -за нарушения FK. Это делает это довольно сложно воспроизвести эту ситуацию. < /P>
Как их удалить? Не хочу этого, я мог бы повредить данные < /li>
[*]...?
< /ul>
удалось воспроизвести это. SQL: < /p>
create table test (
id bigint auto_increment primary key,
parent_id bigint null ,
topic_id bigint,
foreign key (parent_id) references test(id)
) engine=innodb;

insert into test (id, parent_id, topic_id)
values
(1, null, 1),
(2, 1, 1),
(3, 2, 1),
(4, null, 2),
(5, 4, 2);

-- select * from test;

delete from test where topic_id=1;

-- [23000][1451] Cannot delete or update a parent row: a foreign key constraint fails (`mydb`.`test`, CONSTRAINT `test_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `test` (`id`))


Подробнее здесь: https://stackoverflow.com/questions/796 ... ce-to-self
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»