Ich habe die folgende plpgsql -Funktion definiert (Vor Trigger), um die Daten zu aktualisieren, wenn eine der Spalten zur Verfügung gestellt wird, ich werde die andere aus statischen Daten bekommen. Aber ich möchte wissen, was der beste Weg ist, um die statischen Daten für gegebene "columna" zu bekommen, ich muss die "columnb" von static_tbl bekommen (mehr wie Wörterbuch/map datastrcuture). Im Moment frage ich innerhalb der Trigger-Funktion nach der statischen Tabelle.Der beste Weg, statische Daten vor dem Trigger zu bekommen
Ich weiß, dass ich die Case-Anweisung als Abfrage verwenden kann. Bitte lassen Sie mich wissen, was hier am besten passt. Hinzufügen der Testdaten Say ColumnA enthält 'a' es wird in ColumnB als 'Alphabet A' propagiert Sonst enthält ColumnB 'Alphabet A' und wird als 'a' an ColumnA weitergegeben. Was ist der beste Weg, um die statischen Daten zu speichern, die für die Umwandlung von columnA-Wert in columnB-Wert verwendet werden?
CREATE FUNCTION update_tblname_column_b() RETURNS TRIGGER AS $$
BEGIN
IF NEW IS NULL THEN
RAISE EXCEPTION 'this function cannot be installed with a DELETE trigger';
END IF;
IF NEW.column_b IS NOT NULL AND NEW.column_a IS NULL THEN
NEW.column_a = (select column_a from static_tbl where column_b = NEW.column_b);
ELSIF NEW.column_a IS NOT NULL AND NEW.column_b IS NULL THEN
NEW.column_b = (select column_b from static_tbl where column_b = NEW.column_a);
END IF;
RETURN NEW;
END;
$$ LANGUAGE PLPGSQL;
CREATE TRIGGER populate_column
BEFORE INSERT OR UPDATE ON creatives FOR each ROW
EXECUTE PROCEDURE update_tblname_column_b();
Dies ist unklar. Bitte fügen Sie den Trigger selbst nicht nur die Triggerfunktion hinzu. Bitte fügen Sie Beispieldaten hinzu, was vor und nach dem Auslöser sein sollte. – SMW
@SMW Hinzugefügt die Trigger-Definition selbst und einige Test-Probe der Definition von Trigger – Shankar