1つのクエリで3つのテーブルにデータを挿入したい。
私のテーブル以下のようになります。Postgresを使用して一度に3つのテーブルにデータを挿入する
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)
);
私はすべての挿入と引き換えに鍵を取得し、私は次の表に、そのキーを挿入する必要があります。
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;
しかし、私は、単一のクエリを実行する場合、彼らは私に値を戻し、私はすぐに次のクエリでそれらを再利用することはできません。
私のクエリがあります。
これを行うには?
ありがとう私は、任意の挿入が.yesを発生しなかった場合アウトトランザクションのロールを追加どのように私 – Faisal
これは、単一のSQL文であることができます。複数の文を1つのトランザクションに束ねることはできますが、1つのトランザクションを分割することはできません。また、彼のコメントでデニスが言うこと。私は私の答えにいくつかのリンクを付け加えました。 –
しかし、あなたはCTEの中にSELECTを持つことができますし、すぐにそれをINSERTと一緒に使用した後にできますか? – mmcrae