2017-05-08 6 views
0

私は次のことをしようとしました:1つのテーブル内のautoincrementing idを1つのコマンドで別のテーブルに挿入するにはどうすればいいですか?

INSERT INTO second_table(id, somethingelse) 
VALUES(
     (INSERT INTO first_table(post_text) VALUES('a text') RETURNING id), 
     'abcd123' 
    ); 

私は2クエリで選択を行う方法を知っているが、私は一度にこれらの2つの挿入を行うことによって、任意の同時実行の問題を回避しようとしています。行がfirst_tableに挿入されたとき、私はsecond_tablefirst_tableから自動インクリメントidを挿入しようとしている

ERROR: syntax error at or near "INTO" 
LINE 3:   (INSERT INTO first_table(post_text) VALUES('a text... 

:上記の私は、次のエラーが発生します。

答えて

1

使用data modifying CTE

with first_insert as (
    INSERT INTO first_table(post_text) 
    VALUES('a text') 
    RETURNING id 
) 
INSERT INTO second_table(id, somethingelse) 
select id, 'abcd123' 
from first_insert; 
1

行が最初のテーブルに挿入されるたびに実行されるトリガーを作成してみてください。等 何か:

はsecond_table(ID、somethingelse) VALUES( (first_table post_text = 'テキスト' からIDを選択し)、 「abcd123への[first_table ON post_text の挿入の後 INSERTをトリガTRIGGER_NAMEをCREATE ' ); ];

0

以下のコマンドをID列のオフに実行する必要があります。 Identity_Insert [TableName]をオフに設定します。

関連する問題