mirror of
https://github.com/MariaDB/server.git
synced 2025-09-02 09:41:40 +03:00
row0ins.c:
Fix bug: FOREIGN KEY ... ON UPDATE/DELETE NO ACTION must check the foreign key constraint, not ignore it. Peter Gulutzan said that NO ACTION should check the constraint as deferred, at the end of the SQL statement, while RESTRICT should check it immediately. Since we do not have defered constraints in InnoDB, this bug fix makes InnoDB to check NO ACTION constraints immediately, like it checks RESTRICT constraints.
This commit is contained in:
@@ -682,14 +682,6 @@ row_ins_foreign_check_on_constraint(
|
|||||||
(DICT_FOREIGN_ON_DELETE_CASCADE
|
(DICT_FOREIGN_ON_DELETE_CASCADE
|
||||||
| DICT_FOREIGN_ON_DELETE_SET_NULL))) {
|
| DICT_FOREIGN_ON_DELETE_SET_NULL))) {
|
||||||
|
|
||||||
/* No action is defined: return a foreign key error if
|
|
||||||
NO ACTION is not specified */
|
|
||||||
|
|
||||||
if (foreign->type & DICT_FOREIGN_ON_DELETE_NO_ACTION) {
|
|
||||||
|
|
||||||
return(DB_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
row_ins_foreign_report_err((char*)"Trying to delete",
|
row_ins_foreign_report_err((char*)"Trying to delete",
|
||||||
thr, foreign,
|
thr, foreign,
|
||||||
btr_pcur_get_rec(pcur), entry);
|
btr_pcur_get_rec(pcur), entry);
|
||||||
@@ -703,14 +695,6 @@ row_ins_foreign_check_on_constraint(
|
|||||||
|
|
||||||
/* This is an UPDATE */
|
/* This is an UPDATE */
|
||||||
|
|
||||||
/* No action is defined: return a foreign key error if
|
|
||||||
NO ACTION is not specified */
|
|
||||||
|
|
||||||
if (foreign->type & DICT_FOREIGN_ON_UPDATE_NO_ACTION) {
|
|
||||||
|
|
||||||
return(DB_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
row_ins_foreign_report_err((char*)"Trying to update",
|
row_ins_foreign_report_err((char*)"Trying to update",
|
||||||
thr, foreign,
|
thr, foreign,
|
||||||
btr_pcur_get_rec(pcur), entry);
|
btr_pcur_get_rec(pcur), entry);
|
||||||
|
Reference in New Issue
Block a user