Auswählen von Spalten Aus einem Datensatz Variable (PostgreSQL-8.4)
Ich versuche, wählen Sie eine Spalte aus einem Datensatz variable in einer Funktion rufe ich von einer Update-Regel und erhalte die folgende Fehlermeldung:
'nicht identifizieren konnte, die Spalte "name" in den record-Datentyp'
Das folgende ist, was ich mache um den Fehler zu erzeugen:
Innerhalb einer Update-Regel:
SELECT * INTO TEMPORARY TABLE TempTable FROM NEW;
SELECT MyFunction();
Innerhalb MyFunction()
DECLARE RecordVar Record;
SELECT * INTO STRICT RecordVar FROM TempTable;
EXECUTE 'UPDATE AnotherTable SET column = $1.name' USING RecordVar;
Hinweis: mir ist klar, dass es einfachere Wege, das zu erreichen, was der obige code ist erreichen, aber ich habe vereinfacht, die tatsächliche Umsetzung zu konzentrieren auf das problem, das ich habe, welches sich geöffnet hat, andere mögliche Lösungen, aber ich würde wirklich gerne den obigen code arbeiten, wenn möglich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich gerade herausgefunden. Statt einfügen die Spalten aus den NEUEN in die Temporäre Tabelle, füge ich die NEUE Platte als eine einzelne Spalte in die Temporäre Tabelle und beziehen sich auf es als RecordVar."NEUE" in meiner Funktion. Meine Regel und die Funktion sieht nun so aus:
Innerhalb einer Update-Regel:
Innerhalb MyFunction()
Zweiten Teil arbeiten konnte wie diese:
Hinweis, wie ich die Tabelle, die als Namen geben. PostgreSQL erstellt automatisch einen zusammengesetzten Typ für jede Tabelle im system.
Eine variable enthält eine Zeile, die
SELECT
können viele Zeilen zurückgeben. Alle, aber die erste wird verworfen. Ich fügteLIMIT 1
zu klären, die Wirkung. Ich bezweifle, das ist, was Sie wollen.Sollten Sie wahrscheinlich nicht verwenden, eine temporäre Tabelle in einer Regel zu beginnen. Möchten Sie vielleicht poste dein komplettes setup ...