Nachziehen von Relationen

PeterS

Aktiver Benutzer
Beiträge
27
Halle Freunde,

mit einem INSERT neuer Veranstaltungsdaten kommen in meiner [tbVeranstaltungen] gerade verschiedene statische Werte an, die ich in einem (nächsten?) Schritt an vorhandenen relational verbundenen Nebentabellen anbinden möchte.

Es gibt z.B. ein Feld [tbVeranstaltungen].[Referentennummer], welches mit dem zugehörigen Datensatz [tbAdressen].[Referentennummer] synchronisiert werden soll. [tbAdressen].[ID] soll dabei in [tbVeranstaltungen].[FK1] übertragen werden ...

Wie erreiche ich sowas?
Sollte man dergleichen Synchronisationen gleich mit dem Insert fahren?

LG, PeterS
 
Werbung:
Vielleicht verstehe ja da was falsch: Zwischen den Tabellen besteht ja schon eine Foreigns Key-Beziehung - es geht also nicht um die Erzeugnung eines Foreigns Key, sondern nur um den Nachtrag für die neuen Datensätze. Muß ich die ID aus der Untertabelle von dem Insert irgendwie abfragen, womöglich als Variable parken und mit dem Insert einspielen? Jeder neue Datensatz enthält 8 Beziehungsfelder, die zugeordnet werden müssen.
 
Moin moin,

ich würde mal behaupten das dein Script und alle anderen Infos bei der Hilfe wunder wirken können ;)

Auch wäre gut wenn du aufzeigen würdest was du genau erreichen möchtest.... Sorry aber ich diese Infos fordern da meine Glaskugel vorhin kaputt gegangen ist.
 
Werbung:
hast Du dafür mal ein Beispiel?

Jupp:

Code:
test=# create table master (id serial primary key, master_name text);
CREATE TABLE
test=# create table detail (master_id int references master, detail_value text);
CREATE TABLE
test=# with master_id as (insert into master (master_name) values ('neuer master') returning id) insert into detail (master_id, detail_value) select master_id.id, 'neues Detail' from master_id;
INSERT 0 1
test=# select * from master;
 id | master_name  
----+--------------
  1 | neuer master
(1 row)

test=# select * from detail;
 master_id | detail_value
-----------+--------------
  1 | neues Detail
(1 row)

test=#

Im Insert (die Abfrage welche mit WITH beginnt) fügst Du erst in die Tabelle master ein, sicherst Dir die neu vergebene ID und fügst dann alles zusammen in die detail-Tabelle ein. Alles in EINEM Statement, alles atomar.
 
Zurück
Oben