diff --git a/lib/modules/Sql.pmod/rsql.pike b/lib/modules/Sql.pmod/rsql.pike
index 24a002bb65b25317137014502d94d5d118154ab8..940db9b6e3bb9fbebef487c37ace6465a4a2f452 100644
--- a/lib/modules/Sql.pmod/rsql.pike
+++ b/lib/modules/Sql.pmod/rsql.pike
@@ -227,6 +227,11 @@ array(mapping(string:mixed)) query(mixed ... args)
   return do_request('@', args);
 }
 
+int insert_id()
+{
+  return do_request('#');
+}
+
 void create(string|void host, string|void db, string|void user,
 	    string|void _pw, mapping|void options)
 {
diff --git a/lib/modules/Tools.pmod/Standalone.pmod/rsqld.pike b/lib/modules/Tools.pmod/Standalone.pmod/rsqld.pike
index 3f13e8bd32db432985233c319fb61ea1070f7d84..8c9579ca8da3f8932e92a66d606c47e253d1f907 100644
--- a/lib/modules/Tools.pmod/Standalone.pmod/rsqld.pike
+++ b/lib/modules/Tools.pmod/Standalone.pmod/rsqld.pike
@@ -233,6 +233,11 @@ class Connection
     return sqlobj->query(@args);
   }
 
+  protected int cmd_insert_id()
+  {
+    return sqlobj->master_sql->insert_id();
+  }
+
   protected int|array(string|int) cmd_fetchrow(string qid)
   {
     return get_query(qid)->fetch_row();
@@ -277,6 +282,7 @@ class Connection
   {
     commandset_0();
     commandset |= ([
+      '#': cmd_insert_id,
       '@': cmd_query,
       'C': cmd_create,
       'D': cmd_selectdb,