เมื่อคุณเพิ่มแถว (PostgreSQL> = 9.5) และคุณต้องการให้ INSERT ที่เป็นไปได้ตรงกับการอัปเดตที่เป็นไปได้คุณสามารถเขียนได้ดังนี้:
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')
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).
เกือบจะเหมือนกัน แต่ง่ายต่อการคัดลอก / วาง / จัดการรายการคอลัมน์