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
+?>
