mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
LAST_INSERT_ID()}will now return 0 if the last INSERT didn't insert any rows.
This commit is contained in:
@ -143,5 +143,5 @@ insert into t1 values (NULL, 10);
|
|||||||
ERROR 23000: Duplicate entry '10' for key 2
|
ERROR 23000: Duplicate entry '10' for key 2
|
||||||
select last_insert_id();
|
select last_insert_id();
|
||||||
last_insert_id()
|
last_insert_id()
|
||||||
3
|
0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -308,6 +308,11 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list,
|
|||||||
}
|
}
|
||||||
thd->row_count++;
|
thd->row_count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Now all rows are inserted. Time to update logs and sends response to
|
||||||
|
user
|
||||||
|
*/
|
||||||
if (lock_type == TL_WRITE_DELAYED)
|
if (lock_type == TL_WRITE_DELAYED)
|
||||||
{
|
{
|
||||||
if (!error)
|
if (!error)
|
||||||
@ -341,7 +346,7 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list,
|
|||||||
}
|
}
|
||||||
if (id && values_list.elements != 1)
|
if (id && values_list.elements != 1)
|
||||||
thd->insert_id(id); // For update log
|
thd->insert_id(id); // For update log
|
||||||
else if (table->next_number_field)
|
else if (table->next_number_field && info.copied)
|
||||||
id=table->next_number_field->val_int(); // Return auto_increment value
|
id=table->next_number_field->val_int(); // Return auto_increment value
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -383,9 +388,15 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list,
|
|||||||
thd->next_insert_id=0; // Reset this if wrongly used
|
thd->next_insert_id=0; // Reset this if wrongly used
|
||||||
if (duplic != DUP_ERROR)
|
if (duplic != DUP_ERROR)
|
||||||
table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
|
table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
|
||||||
|
|
||||||
|
/* Reset value of LAST_INSERT_ID if no rows where inserted */
|
||||||
|
if (!info.copied && thd->insert_id_used)
|
||||||
|
{
|
||||||
|
thd->insert_id(0);
|
||||||
|
id=0;
|
||||||
|
}
|
||||||
if (error)
|
if (error)
|
||||||
goto abort;
|
goto abort;
|
||||||
|
|
||||||
if (values_list.elements == 1 && (!(thd->options & OPTION_WARNINGS) ||
|
if (values_list.elements == 1 && (!(thd->options & OPTION_WARNINGS) ||
|
||||||
!thd->cuted_fields))
|
!thd->cuted_fields))
|
||||||
send_ok(thd,info.copied+info.deleted,id);
|
send_ok(thd,info.copied+info.deleted,id);
|
||||||
|
Reference in New Issue
Block a user