43
行をアップセルしているとき(PostgreSQL> = 9.5)、可能なINSERTを可能なUPDATEとまったく同じにしたい場合は、次のように書くことができます:PostgreSQL INSERT ON CONFLICT UPDATE(upsert)すべての除外された値を使用
INSERT INTO tablename (id, username, password, level, email)
VALUES (1, 'John', 'qwerty', 5, '[email protected]')
ON CONFLICT (id) DO UPDATE SET
id=EXCLUDED.id, username=EXCLUDED.username,
password=EXCLUDED.password, level=EXCLUDED.level,email=EXCLUDED.email
短い方法がありますか?ちょうど言う:すべてのEXCLUDE値を使用します。 SQLiteので
私が行うために使用:
INSERT OR REPLACE INTO tablename (id, user, password, level, email)
VALUES (1, 'John', 'qwerty', 5, '[email protected]')
ない本当の答えがありますが、少しまもなく表記を使用することができます 'テーブル名。INSERT INTO(ID、ユーザ名、パスワード、レベル、電子メール)VALUES(1、 'ジョン'、 'QWERTY'、5 、 '[email protected]') ON CONFLICT(ID)DO UPDATE SET (ユーザー名、パスワード、レベル、電子メール)=(EXCLUDED.username、EXCLUDED.password、EXCLUDED.level、EXCLUDED.email)同じですが、列リストをコピー/ペースト/管理するのが簡単です – foal
もう1つの選択肢はjsonb列を使用して列を気にする必要がない方法です –