Ich möchte Daten in 3 Tabellen mit einer einzigen Abfrage einfügen.
Meine Tabellen sieht aus wie folgt:Einfügen von Daten in 3 Tabellen gleichzeitig mit Postgres
CREATE TABLE sample (
id bigserial PRIMARY KEY,
lastname varchar(20),
firstname varchar(20)
);
CREATE TABLE sample1(
user_id bigserial PRIMARY KEY,
sample_id bigint REFERENCES sample,
adddetails varchar(20)
);
CREATE TABLE sample2(
id bigserial PRIMARY KEY,
user_id bigint REFERENCES sample1,
value varchar(10)
);
Ich werde einen Schlüssel im Gegenzug für jede Einfügung bekommen und ich brauche den Schlüssel in der nächsten Tabelle einzufügen. sie nur Werte zurück zu mir
insert into sample(firstname,lastname) values('fai55','shaggk') RETURNING id;
insert into sample1(sample_id, adddetails) values($id,'ss') RETURNING user_id;
insert into sample2(user_id, value) values($id,'ss') RETURNING id;
Aber wenn ich einzelne Abfragen ausführen und ich kann sie nicht sofort in der nächsten Abfrage wiederverwenden:
Meine Abfrage ist.
Wie erreichen?
thanx für die Wiedergabe kann ich Transaktion Roll-out hinzufügen, wenn eine Einfügung fehlschlagen .ja auftritt wie kann ich – Faisal
Dies ist eine einzelne SQL-Anweisung. Man kann mehrere Anweisungen in einer einzigen Transaktion bündeln, aber man kann diese nicht aufteilen. Auch was Denis in seinem Kommentar sagt. Und ich habe einige Links zu meiner Antwort hinzugefügt. –
aber können Sie eine SELECT innerhalb der CTE haben, und dann sofort nach der Verwendung mit einem INSERT? – mmcrae