44000: with_check_option_violation
PostgreSQLNe demek?
WITH CHECK OPTION tanımlı bir view üzerinden yapılan INSERT/UPDATE, ortaya çıkan satırın view'ın WHERE koşulunu artık sağlamaması nedeniyle reddedildi. View, kendi filtresi dışına düşecek satırların yazılmasını engeller.
Neden olur?
Güncellenebilir bir view WITH CHECK OPTION ile tanımlanmış ve yapılan yazma işlemi sonucunda satır, view'ın tanım koşulunun dışına çıkıyor (ör. view status='aktif' filtreliyken satırı 'pasif' yapmak). Satır güvenliği (RLS) politikalarında da benzer bir denetim tetiklenebilir.
Nasıl çözülür?
Yazılan değerlerin view'ın WHERE koşulunu sağladığından emin olun ya da işlemi view yerine doğrudan temel tablo üzerinde yapın (yetkiler elveriyorsa). İş kuralı satırın filtre dışına çıkmasına izin veriyorsa view'ı WITH CHECK OPTION olmadan yeniden tanımlayın. RLS ise ilgili policy WITH CHECK ifadesini gözden geçirin.