diff options
Diffstat (limited to 'includes/database.mysql.inc')
-rw-r--r-- | includes/database.mysql.inc | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/includes/database.mysql.inc b/includes/database.mysql.inc index 166017621..45426fff2 100644 --- a/includes/database.mysql.inc +++ b/includes/database.mysql.inc @@ -250,13 +250,11 @@ function db_error() { * with table prefixes. For example, db_next_id('{node}_nid'); */ function db_next_id($name) { + global $active_db; $name = db_prefix_tables($name); - db_query('LOCK TABLES {sequences} WRITE'); - $id = db_result(db_query("SELECT id FROM {sequences} WHERE name = '%s'", $name)) + 1; - db_query("REPLACE INTO {sequences} VALUES ('%s', %d)", $name, $id); - db_query('UNLOCK TABLES'); + db_query('INSERT INTO {sequences} VALUES ("%s", LAST_INSERT_ID(1)) ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id + 1)', $name); - return $id; + return mysql_insert_id($active_db); } /** |