PostgreSQL’de sunucu tarafı programlama: PL/pgSQL
PL/pgSQL ile fonksiyon, yordam ve tetikleyiciler yazar; hata yönetimini, dinamik SQL’in güvenli kullanımını ve veritabanı kodunu pgTAP ile sınamayı öğrenirsin.
Seviye 301 · 17 ders · 15 pratik lab
Dersler
Fonksiyonlar
- SQL fonksiyonları
- PL/pgSQL blokları, değişkenler ve koşullar
- Döngüler ve imleçler
- Küme döndüren fonksiyonlar
- Değişkenlik sınıfları ve SECURITY DEFINER
- Kısa görev: indirim hesaplayan fonksiyon
Yordamlar ve tetikleyiciler
- Yordamlar ve işlem denetimi
- Hata yakalamak ve hata fırlatmak
- Satır tetikleyicileri: doğrulama ve zaman damgası
- Değişiklik geçmişi tetikleyicisi
- Güvenli dinamik SQL: format ve quote_ident
- Kısa görev: stoğu düşüren tetikleyici
Kalite
- pgTAP ile test
- RAISE NOTICE ile hata ayıklama
- Fonksiyon performansı ve satır içine açılma
- Veritabanı kodunu sürümlemek
- Bitirme görevi: bir izin talep sistemi
Pratik lablar
- İndirim hesaplayan fonksiyon yaz: Sepet tutarı ve üyelik düzeyine göre indirim döndüren bir PL/pgSQL fonksiyonu yaz.
- Tablo döndüren fonksiyon yaz: Bir tarih aralığı alıp gün başına sipariş özeti satırları döndüren fonksiyon yaz.
- SECURITY DEFINER açığını kapat: search_path ayarlanmamış yetkili fonksiyonun nasıl kötüye kullanılabileceğini göster ve düzelt.
- Yordamda ara COMMIT kullan: Milyon satırı on binlik parçalarla güncelleyen ve her parçada COMMIT yapan bir yordam yaz.
- Anlamlı hata fırlat ve yakala: Geçersiz izin tarihinde özel hata kodu fırlatan ve çağıran tarafta yakalanan bir akış kur.
- Hatada kısmi işi geri al: İç blokta hata olduğunda yalnızca o kaydı atlayıp hata tablosuna yazan toplu işlem yordamı yaz.
- Satış sonrası stoğu tetikleyiciyle düş: Sipariş satırı eklenince ürün stoğunu düşen ve yetersizse hata veren tetikleyici yaz.
- Değişiklik geçmişini JSON olarak tut: Her tablo değişikliğinde eski ve yeni satırı JSONB olarak denetim tablosuna yazan genel tetikleyici kur.
- Tetikleyici sırasının sonuca etkisini çöz: Aynı tabloda çalışan üç tetikleyicinin sırası yüzünden yanlış toplam üreten hatayı bul ve düzelt.
- Tablo adını güvenle birleştir: Ay adına göre tablo seçen fonksiyonda format ve %I kullanarak güvenli dinamik SQL yaz.
- Enjeksiyona açık fonksiyonu düzelt: Metin birleştirerek sorgu kuran arama fonksiyonuna enjeksiyon dene ve parametreli hale getir.
- Dinamik bölüm bakımı yaz: Gelecek ayın bölümünü oluşturan ve 12 aydan eski bölümleri ayıran güvenli dinamik bir yordam yaz.
- Fonksiyonu RAISE NOTICE ile izle: Yanlış sonuç veren döngülü fonksiyona ara çıktılar ekleyip hatalı adımı bul.
- pgTAP ile fonksiyon testi yaz: İzin hesaplama fonksiyonu için sınır durumlarını kapsayan beş pgTAP testi yaz ve çalıştır.
- Yavaş fonksiyonu sorguya göm: Her satırda çağrıldığı için yavaşlayan fonksiyonu satır içi açılabilir SQL fonksiyonuna çevirip planı karşılaştır.
Kurs hakkında
PL/pgSQL ile fonksiyon, yordam ve tetikleyiciler yazar; hata yönetimini, dinamik SQL’in güvenli kullanımını ve veritabanı kodunu pgTAP ile sınamayı öğrenirsin.
Ne öğreneceksin
- Fonksiyonlar
- Yordamlar ve tetikleyiciler
- Kalite
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde ve ona bağlı özel bir lab ağında geçer. Kurulum gerekmez.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.