행을 upserting 할 때 (PostgreSQL> = 9.5) 가능한 INSERT가 가능한 UPDATE와 정확히 동일하게하려면 다음과 같이 작성할 수 있습니다.
INSERT INTO tablename (id, username, password, level, email)
VALUES (1, 'John', 'qwerty', 5, 'john@mail.com')
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, 'john@mail.com')
또 다른 옵션은 사용 jsonb 컬럼에이고 그런 식으로 당신은 컬럼에 대해 걱정할 필요가 없습니다
—
J 것이다
INSERT INTO tablename (id, username, password, level, email) VALUES (1, 'John', 'qwerty', 5, 'john@mail.com') ON CONFLICT (id) DO UPDATE SET (username, password, level, email) = (EXCLUDED.username, EXCLUDED.password, EXCLUDED.level, EXCLUDED.email).
관리 / 붙여 넣기 / 열 목록 거의 동일하지만, 쉽게 사본