So, ich habe den Vorschlag jetzt mal ausprobiert und damit ein wenig herumgespielt. Dieser liefert in meiner Situation zwar keine Fehlermeldung oder Log Einträge, aber leider auch keine Daten.
Ebenfalls habe ich versucht das Problem mit einem Minimalbeispiel nachzustellen:
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEAugymdplPKZOWlVXkdexJnPkn3dM9TefRhqcVJesLqeR4jk04tXi8
jLaj1rq20ju+gWQbAKk596VYiSai7t4r2rSNoJwXhfMTNe4qPs9leE1fSbyTtpUU
dQLeCsrM4EXFLuSiSoUmuYKX0fJM7fs/kGT0ksgkJ2Cbvst06qFEYfK2EoKx/3UM
HGKsJPHt0KYDOlQZFV/HY6bbRayyqbstKGegqPTBQZH6bvHWWW39J5YfVcQce9Nv
UVKioiLB/tMZsk8Swgg3HhdNXqDQ0+/4f2nvQlM8VOlFP9aemVYZYw/7B+aFGeXu
5orxlTow7/4O1Zmp5ojdQW8yKYM27u4qKSG4pTJllrhyTfD/nZtSwc/QwXMInF1H
H7xOt41a8dcCAhIAGGs4Penx0I2wCmDBbT7NCawCpGOm5CXvVlyfI+AieVvAtGoE
daMyMIHFDaPDUIVuIQtlqEEJmS7Jx6h8V3YDcAN8w4WETyk8f3GjDbhOez63C1Ie
ttHH9Rt8KrOiph9Dm6KkF8hyK51USatI83rD5D2/t8N9ZaxmIw3W9iCazHcDcapv
e6iQEYL0XCBbl3YV8F6xGIhBeXyf8PQ4mTOjomNC059+5qbak/4OGZ0FDC6t7bLR
rMdIZH7+/nqQdlwTrRgitTjf40e9hjuNUEeI5LaIkGBwCub0aXoYM2kCAwEAAQ==
-----END RSA PUBLIC KEY-----
Link läuft am 15.08.2023 ab.
https://www.swisstransfer.com/d/008a846a-9eca-490d-aa06-ca3de19f88c1
Konkret soll in diesem Beispiel eine beliebige Eigenschaft aus Tabelle Daten übernommen werden, wenn in der Tabelle Artikel ein Name erfasst wird, der in der Tabelle Daten schon vorhanden ist.
Tabellen im neuen Beispiel
Artikel (Spalten: id, name, eigenschaft_int, eigenschaft_text, eigenschaft_url)
(leer)
Daten (Spalten: id, name, eigenschaft_int, eigenschaft_text, eigenschaft_url)
1, a, 100, Hundert, http://100.de
1, b, 100, Hundert, http://100.de
1, c, 100, Hundert, http://100.de
Erwartung: Wenn ich in der Relation Artikel einen Eintrag erstelle der nur einen Namen (als Beispiel a) enthält wird eine Eigenschaft aus der Relation Daten über den Namen ergänzt (nicht verknüpft, sondern direkt als Wert gesetzt). Die Relation Daten soll zu jedem Zeitpunkt unabhängig bleiben.
Folgende Backend Funktion wurde erstellt:
$BODY$
DECLARE
BEGIN
UPDATE {copycat}.[artikel]
SET (copycat.artikel.eigenschaft_int) = NEW.(copycat.daten.eigenschaft_int)
WHERE (copycat.artikel.name) = NEW.(copycat.daten.name);
RETURN NEW;
END;
$BODY$
Mit der Relation Artikel verknüpft und an INSERT/UPDATE gekoppelt.
Vielleicht noch zur Erklärung des Vorgehens (bezogen auf das erste Beispiel im ersten Post). Ich kann in meiner realen Datentabelle keine Datensätze hinzufügen. Diese wird regelmässig mit neuen Werten befüllt (Daten von Extern). Daher keine 1:n Verknüpfung. Zudem haben nicht alle erfassten Artikel eine CAS-Nummer und können damit nicht in jedem Fall nachgeschlagen werden. Wenn eine CAS Nr. vorhanden ist, ist diese auch mit einer hohen Wahrscheinlichkeit in meiner Datentabelle hinterlegt. In dieser befindet sich ebenfalls die URL zur GESTIS-Stoffdatenbank. Damit wäre es möglich, die Sicherheitshinweise für die Substanz direkt nach der Erfassung des Artikels (mit CAS Nr.) als iFrame anzeigen zu lassen, wenn ein entsprechender Eintrag vorhanden ist.