これはバグ、機能、またはドキュメントの問題であるかどうかわかりません。Postgres 9.5に挿入された行のIDを取得する方法UPSERT
のは、私は、このテーブルがあるとしましょう:NOを与える INSERT INTO tags(value) VALUES('a') ON CONFLICT(value) DO NOTHING RETURNING id
で再度実行
:あなたは新しく挿入された値しかしのIDを取得しますINSERT INTO tags(value) VALUES('a') RETURNING id;
を実行する場合
CREATE TABLE tags(
id BIGSERIAL PRIMARY KEY,
value TEXT UNIQUE NOT NULL,
creation_time TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
);
を id、つまり、どちらかがBUGであることを意味します。つまり、ドキュメントhttp://www.postgresql.org/docs/9.5/static/sql-insert.htmlは
INSERT INTO table_name [ AS alias ] [ (column_name [, ...]) ]
{ DEFAULT VALUES | VALUES ({ expression | DEFAULT } [, ...]) [, ...] | query }
[ ON CONFLICT [ conflict_target ] conflict_action ]
[ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
これは基本的にあなたがCANの両方を使用することを意味し、誰もこの同じ問題を見つけて解決しましたか?