Index: database.mysql.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/database.mysql.inc,v retrieving revision 1.27.2.1 diff -u -p -r1.27.2.1 database.mysql.inc --- database.mysql.inc 14 Apr 2005 18:50:23 -0000 1.27.2.1 +++ database.mysql.inc 2 May 2005 10:41:41 -0000 @@ -148,12 +148,13 @@ function db_error() { */ function db_next_id($name) { $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'); + $success = db_query("UPDATE {sequences} SET id = LAST_INSERT_ID(id + 1) WHERE name = '%s'", $name); + // if UPDATE failed because there was now row with that name + if (!$success) { + db_query("INSERT INTO {sequences} VALUES ('%s', %d)", $name, 0); + } - return $id; + return mysql_insert_id(); } /** @@ -239,4 +240,4 @@ function db_escape_string($text) { * @} End of "ingroup database". */ -?> \ No newline at end of file +?>