Chcę wstawić dane do 3 tabel za pomocą pojedynczego zapytania.
Moi stoły wygląda jak poniżej:Wstawianie danych w 3 tabelach jednocześnie za pomocą Postgreatora:
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)
);
dostanę klucz w zamian za każdym włożeniu i muszę wstawić ten klucz w kolejnej tabeli.
Moje zapytanie brzmi:
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;
Ale jeśli uruchomię pojedynczych zapytań po prostu zwracają wartości do mnie i nie mogę natychmiast ponownie je w kolejnym zapytaniu.
Jak to osiągnąć?
thanx do powtórzenia mogę dodać rollout transakcji, jeśli wystąpi błąd wstawiania. Tak jak mogę – Faisal
To jest pojedyncza instrukcja SQL. Można połączyć kilka zdań w jedną transakcję, ale nie można tego podzielić. Ponadto, co Denis mówi w swoim komentarzu. I dodałem kilka linków do mojej odpowiedzi. –
ale czy możesz wybrać SELECT wewnątrz CTE, a następnie natychmiast po użyciu z INSERT? – mmcrae