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:
@ -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;
|
||||
|
Reference in New Issue
Block a user