Ich habe ein Trigger-basiertes Partitionierungsschema auf einer unserer pg 8.3-Datenbanken gemäß der pg docs here: eingerichtet. Grundsätzlich habe ich eine Elterntabelle, zusammen mit mehreren Kindtabellen. Ein Einfüge-Trigger für das übergeordnete Element leitet alle Einfügungen für das übergeordnete Element in die entsprechende untergeordnete Tabelle um. Dies funktioniert gut.ActiveRecord, Postgres und partitionierte Tabellen
Der ActiveRecord-PG-Adapter scheint jedoch auf die Postgres-INSERT ... RETURNING-Erweiterung "id" angewiesen zu sein, um die ID der zurückgegebenen Zeile nach der ursprünglichen Einfügung zu erhalten. Aber der Trigger scheint die RETURNING-Klausel zu brechen - es wird keine ID zurückgegeben, obwohl die Zeile korrekt erstellt wurde.
Während ich denke, dieses Verhalten macht Sinn - schließlich wird nichts in der Haupttabelle eingefügt, ich muss wirklich eine Art von umgehen, wie andere untergeordnete Datensätze eingefügt werden, die die Zeilen-ID von benötigen die gerade eingefügte Zeile.
Ich denke, ich könnte vor dem Einfügen eine Art von eindeutigen ID zu Zeile hinzufügen und dann lesen Sie es mit diesem Schlüssel nach dem Einfügen, aber das scheint ziemlich kludgy. Hat jemand eine bessere Work-around?