DBAtlas · Veritabanı operasyon atlası

2F003: prohibited_sql_statement_attempted

PostgreSQL

Ne demek?

Bir SQL fonksiyonunun/rutininin içinde, o bağlamda yasak olan bir ifade çalıştırılmaya çalışıldı. Class 2F (sql_routine_exception) sınıfındadır. Örneğin salt-okunur olması beklenen bir fonksiyonun veri değiştirmeye kalkması.

Neden olur?

Çekirdek PostgreSQL bu kodu nadiren üretir; genellikle eklenti veya prosedürel dil kodundan gelir. Not: IMMUTABLE/STABLE işaretli bir fonksiyonun INSERT/UPDATE/DELETE çalıştırması 2F003 değil, 0A000 (feature_not_supported) koduyla '... is not allowed in a non-volatile function' hatası verir.

Nasıl çözülür?

Hata mesajında hangi ifadenin yasaklandığını okuyun ve ilgili rutin/eklenti belgesine bakın. Non-volatile fonksiyon hatası (0A000) alıyorsanız veri değiştiren fonksiyonu VOLATILE olarak tanımlayın (bu varsayılandır): CREATE FUNCTION ... LANGUAGE plpgsql VOLATILE. Salt-okunur olması gereken yerlerde (index ifadeleri, constraint kontrolleri) veri değiştiren çağrıları kaldırın.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar