mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
MDEV-15042: INSERT ON DUPLICATE KEY UPDATE produces error 1032 (Can't find record)
Problem was that wrong error message was returned when insert returned FK-error and there was no duplicate key to process. row_ins If error from insert was DB_NO_REFERENCED_ROW and there was no duplicate key we should ignore ON DUPLICATE KEY UPDATE and return original error message.
This commit is contained in:
@ -58,3 +58,20 @@ SELECT * FROM t2;
|
||||
i vi m
|
||||
1 1 3
|
||||
DROP TABLE t2, t1;
|
||||
CREATE TABLE parent (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT
|
||||
) ENGINE=INNODB;
|
||||
CREATE TABLE child (
|
||||
parent_id INT NOT NULL PRIMARY KEY,
|
||||
id INT NOT NULL,
|
||||
CONSTRAINT fk_c_parent FOREIGN KEY (parent_id) REFERENCES parent (id) ON UPDATE CASCADE ON DELETE CASCADE
|
||||
) ENGINE=INNODB;
|
||||
INSERT INTO child (id, parent_id) VALUES (1, 1);
|
||||
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `fk_c_parent` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)
|
||||
INSERT INTO child (id, parent_id) VALUES (1, 1) ON DUPLICATE KEY UPDATE id = VALUES(id);
|
||||
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `fk_c_parent` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)
|
||||
select * from parent;
|
||||
id
|
||||
select * from child;
|
||||
parent_id id
|
||||
drop table child, parent;
|
||||
|
Reference in New Issue
Block a user