Bir tabloda 2 sütundan birinde çakışma olduğunda, Postgres 9.5'te upsert
yapmak mümkün mü? Temel olarak 2 sütunum var ve her iki sütun da benzersiz kısıtlama ihlali atarsa, güncelleme işlemini gerçekleştirmek istiyorum.Postgres'te 2 kolondan birinde çatışmaya nasıl girilir?
8
A
cevap
5
Evet ve bu davranış varsayılan. Herhangi bir benzersiz kısıtlama ihlali bir çatışmayı oluşturur ve belirtildiğinde, ON CONFLICT DO UPDATE
belirtilir. INSERT
ifadesinin yalnızca bir ON CONFLICT
yan tümcesi olabilir, ancak bu maddenin conflict_target
her biri UNIQUE
kısıtlaması gibi bir dizine sahip olması gereken birden çok sütun adı belirtebilir. Bununla birlikte, tek bir conflict_action
ile sınırlıdır ve bu eylemi işlerken çakışmaya neden olan kısıtlama hakkında bilgi sahibi olmazsınız. Bu tür bir bilgiye veya kısıtlama ihlaline bağlı olarak belirli bir eyleme ihtiyacınız varsa, bir tetikleme işlevi yazmalısınız, ancak INSERT ... ON CONFLICT DO ...
ifadesinin tüm önemli atomikliğini kaybedersiniz.
İlgili konular
- 1. Köşeli 2: Tuşa basmadan formun nasıl girileceği nasıl girilir?
- 2. JspTag’larda istek nasıl girilir?
- 3. Mevcut bir projeye nasıl girilir?
- 4. org modu: komut nasıl girilir
- 5. benim ViewControllers birinde TabBarDelegate
- 6. C# datatable arasında kolondan ayrı değerleri bulup
- 7. Derecelendirme çubuğunun değerlendirme derecesi geridönüşüme nasıl girilir
- 8. Metin dosyası nasıl okunur ve kolondan önce belirli bir dizeyi arar ve sonra da içeriği kolondan sonra gösterir?
- 9. Ansible YAML dosyasındaki bir dizede kolondan nasıl kurtulabilirim?
- 10. Latex'in verbatim'i: her örnek nasıl girilir?
- 11. DateTime'ı MySQL'e C# ile nasıl girilir? #
- 12. Entity Framework'teki görünümler (kullanıcı formları) nasıl girilir?
- 13. Komut satırında bir sekme char nasıl girilir?
- 14. Dosyayı değiştirmeden alt klasördeki dosyaya nasıl girilir?
- 15. Laravel denetleyicisi nasıl girilir, kodu görüntüleyin?
- 16. Git çekme komutuna şifre nasıl girilir?
- 17. Montaj yapmadan MVC4 kaynak koduna nasıl girilir?
- 18. Xorg altında greek alpha nasıl girilir?
- 19. Geçerli ray nesnelerine nasıl girilir javascript
- 20. Jenerik F # arayüzlerle C# birinde
- 21. Keras: Doğrudan sinir ağının diğer gizli katmanlarına girdi nasıl girilir?
- 22. Bir koşul karşılandığında hata ayıklama moduna nasıl girilir?
- 23. Bir kelimeyi tamamlamak yerine minibuffer'da boşluk nasıl girilir?
- 24. GCM tarafından otomatik olarak görüntüleniyorsa, Android'deki bildirim işlemine nasıl girilir?
- 25. IPython parçacığı BoundedFloatText kullanarak sayısal değerler nasıl girilir?
- 26. CSS bildirisinde kolondan sonra boşluk bırakmaya gerek var mı?
- 27. F # tür üye sabiti nasıl tanımlanır? C# birinde
- 28. Metin kutularından birinde yalnızca Fars dilinde nasıl yazılır
- 29. dan. Benim Python birinde ithalat XXXX
- 30. Omurga olaylar benim görüşleri birinde dom elemanı
Bunun% 100 doğru olduğundan emin değilim, kuşkusuz soru muğlak. Eğer 2 sütun farklı özgün kısıtlamalara sahipse (bu sorudan ne anladım), o zaman ON CONFLICT sadece DO NOTHING için kullanılabilir. "Conflict_target" adı verilen zincirleme veya "ayırma" gibi görünmüyor olabilirsiniz. – Jeff
@Jeff Cevabımı genişletti. – Patrick
Güncellemeniz için teşekkürler. Aynı INSERT ile iki farklı ihlali ele alıp alamayacağımıza dair kendi sorumu yanıtlıyor. – Jeff