Bir sıraya (PostgreSQL> = 9.5) güç katıyorsanız ve olası INSERT'in olası UPDATE ile tam olarak aynı olmasını istiyorsanız, bu şekilde yazabilirsiniz. :PostgreSQL CONFLICT GÜNCELLENMESİ ÜZERİNDEN KURTARMA (yükseltin) hariç tutulan tüm değerleri kullanın
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
Daha kısa bir yol var mı? Sadece söylemek için: tüm EXCLUDE değerlerini kullanın.
INSERT OR REPLACE INTO tablename (id, user, password, level, email)
VALUES (1, 'John', 'qwerty', 5, '[email protected]')
Gerçek bir cevap ama biraz kısa bir süre notasyonu kullanabilirsiniz: '1 (tabloismi INTO (id, kullanıcı adı, parola, seviye, e-posta) VALUES INSERT, 'John', 'qwerty', 5 , '[email protected]') AÇIK ÇIKIŞ (id) DO UPDATE SET (kullanıcı adı, parola, seviye, e-posta) = (EXCLUDED.username, EXCLUDED.password, EXCLUDED.level, EXCLUDED.email). aynı, ama kopyalamak/yapıştırmak/sütun listesini yönetmek – foal
Başka bir seçenek jsonb sütunları kullanmaktır ve bu şekilde sütunlar hakkında endişelenmenize gerek yok –