Index: lib/sqlalchemy/databases/firebird.py
===================================================================
--- lib/sqlalchemy/databases/firebird.py	(revision 2653)
+++ lib/sqlalchemy/databases/firebird.py	(working copy)
@@ -312,19 +312,11 @@
         else:
             self.strings[func] = func.name
 
-    def visit_insert(self, insert):
-        """Inserts are required to have the primary keys be explicitly present.
+    def visit_insert_column(self, column, parameters):
+        # all column primary key inserts must be explicitly present
+        if column.primary_key:
+            parameters[column.key] = None
 
-         mapper will by default not put them in the insert statement
-         to comply with autoincrement fields that require they not be
-         present. So, put them all in for all primary key columns.
-         """
-
-        for c in insert.table.primary_key:
-            if not self.parameters.has_key(c.key):
-                self.parameters[c.key] = None
-        return ansisql.ANSICompiler.visit_insert(self, insert)
-
     def visit_select_precolumns(self, select):
         """Called when building a ``SELECT`` statement, position is just
         before column list Firebird puts the limit and offset right
