1
0
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:
Jan Lindström
2018-02-05 18:21:28 +02:00
parent 9390ff53fc
commit 60f51af755
3 changed files with 53 additions and 1 deletions

View File

@ -61,3 +61,26 @@ INSERT into t2 VALUES (1, 1, 100);
INSERT INTO t2 (i,m) VALUES (1, 2) ON DUPLICATE KEY UPDATE m=3;
SELECT * FROM t2;
DROP TABLE t2, t1;
#
# MDEV-15042: INSERT ON DUPLICATE KEY UPDATE produces error 1032 (Can't find record)
#
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;
--error ER_NO_REFERENCED_ROW_2
INSERT INTO child (id, parent_id) VALUES (1, 1);
--error ER_NO_REFERENCED_ROW_2
INSERT INTO child (id, parent_id) VALUES (1, 1) ON DUPLICATE KEY UPDATE id = VALUES(id);
select * from parent;
select * from child;
drop table child, parent;