Rin
*
Multi-table DELETE and Foreign Key (bad affected rows)
Всем привет!
Кажется я обнаружил ошибку в mySQL при удалении нескольких таблиц. Посмотрите внимательно на мой тестовый файл. В последнем запросе mySQL возвращает affected rows = 1, а должно быть 3.
Что бы сразу стало понятно, отношения между таблицами через внешний ключ по полю id вот такие:
t3.id -> t2.id -> t1.id
У меня mySQL 4.0.18
test.sql
-------------------------
[sql]
#CREATE DATABASE `test`;
CREATE TABLE `t1` (
`id` int( 11 ) NOT NULL AUTO_INCREMENT ,
PRIMARY KEY ( `id` )
) TYPE = InnoDB AUTO_INCREMENT =2;# MySQL returned an empty result set (i.e.
zero rows).
INSERT INTO `t1`
VALUES ( 1 ) ;# Affected rows:1
CREATE TABLE `t2` (
`id` int( 11 ) NOT NULL default '0',
UNIQUE KEY `id` ( `id` ) ,
CONSTRAINT `t1_id_fk` FOREIGN KEY ( `id` ) REFERENCES `t1` ( `id` )
) TYPE = InnoDB;# MySQL returned an empty result set (i.e. zero rows).
INSERT INTO `t2`
VALUES ( 1 ) ;# Affected rows:1
CREATE TABLE `t3` (
`id` int( 11 ) NOT NULL default '0',
KEY `id` ( `id` ) ,
CONSTRAINT `t2_id_fk` FOREIGN KEY ( `id` ) REFERENCES `t2` ( `id` )
) TYPE = InnoDB;# MySQL returned an empty result set (i.e. zero rows).
INSERT INTO `t3`
VALUES ( 1 ) ;# Affected rows:1
DELETE t3, t2, t1
FROM t1, t2, t3
WHERE t1.id =1 AND t2.id = t1.id AND t3.id = t2.id;# Affected rows:1
[/sql]
-------------------------
Всем привет!
Кажется я обнаружил ошибку в mySQL при удалении нескольких таблиц. Посмотрите внимательно на мой тестовый файл. В последнем запросе mySQL возвращает affected rows = 1, а должно быть 3.
Что бы сразу стало понятно, отношения между таблицами через внешний ключ по полю id вот такие:
t3.id -> t2.id -> t1.id
У меня mySQL 4.0.18
test.sql
-------------------------
[sql]
#CREATE DATABASE `test`;
CREATE TABLE `t1` (
`id` int( 11 ) NOT NULL AUTO_INCREMENT ,
PRIMARY KEY ( `id` )
) TYPE = InnoDB AUTO_INCREMENT =2;# MySQL returned an empty result set (i.e.
zero rows).
INSERT INTO `t1`
VALUES ( 1 ) ;# Affected rows:1
CREATE TABLE `t2` (
`id` int( 11 ) NOT NULL default '0',
UNIQUE KEY `id` ( `id` ) ,
CONSTRAINT `t1_id_fk` FOREIGN KEY ( `id` ) REFERENCES `t1` ( `id` )
) TYPE = InnoDB;# MySQL returned an empty result set (i.e. zero rows).
INSERT INTO `t2`
VALUES ( 1 ) ;# Affected rows:1
CREATE TABLE `t3` (
`id` int( 11 ) NOT NULL default '0',
KEY `id` ( `id` ) ,
CONSTRAINT `t2_id_fk` FOREIGN KEY ( `id` ) REFERENCES `t2` ( `id` )
) TYPE = InnoDB;# MySQL returned an empty result set (i.e. zero rows).
INSERT INTO `t3`
VALUES ( 1 ) ;# Affected rows:1
DELETE t3, t2, t1
FROM t1, t2, t3
WHERE t1.id =1 AND t2.id = t1.id AND t3.id = t2.id;# Affected rows:1
[/sql]
-------------------------