2016-01-27 13 views

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.

+2

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

+0

@Jeff Cevabımı genişletti. – Patrick

+0

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

İlgili konular