私は一意の2つの列を持ち、最初の列(または両方の列)に競合がある場合にアップサートしたいが、2番目の列のみが競合する場合は何もしない表があります。これは可能ですか?2つのカラムのうちの1つのカラムで競合が発生した場合、Postgresでアップセットできますか?
CREATE TABLE test (
username VARCHAR(255) NOT NULL UNIQUE,
email VARCHAR(255) NOT NULL UNIQUE,
status VARCHAR(127)
);
次は、電子メールでの競合をチェックするために動作します:
INSERT INTO test(username, email)
VALUES ('test', '[email protected]')
ON CONFLICT(email) DO UPDATE SET status='upserted';
しかし、私はこの(以下、無効な構文)のような何かをしたいと思います:あなたは、
(INSERT INTO test(username, email)
VALUES ('test', '[email protected]')
ON CONFLICT(email) DO UPDATE SET status='upserted')
ON CONFLICT DO NOTHING;
[ON CONFLICT句で使用する複数の競合の\ _target]の可能性のある重複http://stackoverflow.com/questions/35888012/use-multiple-conflict- target-in-on-conflict-clause) – e4c5
@ e4c5この質問は、複数の起こりうる競合を条件付きで処理することについてです。あなたが参照する質問は、単に複数の制約に関するものです。 – Patrick