İçeriğe atla
FerdiGidenby FerdiSoftBETA v2.4
Web Geliştirme

MySQL Transaction ile Tutarlı Sipariş Kaydı

MySQL Transaction ile Tutarlı Sipariş Kaydı hakkında dağınık bilgiler yerine derli toplu bir kaynak arıyorsanız doğru yerdesiniz. Bu yazı 5 temel noktayı ve bunları bir araya getiren PHP örneğini sade bir dille açıklıyor.

Ferdi GidenFerdi Giden 2 dk okuma 21
MySQL Transaction ile Tutarlı Sipariş Kaydı
İçindekiler
  1. Konuya genel bakış
  2. Öne çıkan noktalar
  3. Uygulamalı örnek
  4. Avantajları
  5. Son söz

MySQL Transaction ile Tutarlı Sipariş Kaydı hakkında dağınık bilgiler yerine derli toplu bir kaynak arıyorsanız doğru yerdesiniz. Bu yazı 5 temel noktayı ve bunları bir araya getiren PHP örneğini sade bir dille açıklıyor.

Konuya genel bakış

Bir sipariş kaydı genellikle birkaç tabloya dokunur: sipariş başlığı, satırlar, stok düşümü ve ödeme kaydı. Bu adımlardan biri yarıda kalırsa stok düşmüş ama sipariş oluşmamış olur. Transaction (işlem) bu adımları tek bir bütün hâline getirir: ya hepsi kaydedilir ya da hiçbiri.

Öne çıkan noktalar

  • beginTransaction / commit: Aradaki tüm sorgular tek bir iş birimi olarak kaydedilir.
  • rollBack: Herhangi bir hata olursa veritabanı işlem öncesindeki hâline döner.
  • Koşullu güncelleme: stok >= ? koşulu, aynı anda gelen iki siparişin stoğu eksiye düşürmesini engeller.
  • InnoDB: İşlem desteği için tablolar InnoDB motorunda olmalıdır; MyISAM işlem desteklemez.
  • Kısa tutun: İşlem içinde dış API çağrısı ya da uzun hesaplama yapmayın; kilitler gereksiz uzar.

Uygulamalı örnek

Teoriyi somutlaştırmak için kısa bir PHP örneğine bakalım:

$pdo->beginTransaction();
try {
    $pdo->prepare('INSERT INTO siparisler (uye_id, toplam) VALUES (?, ?)')->execute([$uyeId, $toplam]);
    $siparisId = (int)$pdo->lastInsertId();

    $stok = $pdo->prepare('UPDATE urunler SET stok = stok - ? WHERE id = ? AND stok >= ?');
    foreach ($sepet as $urun) {
        $stok->execute([$urun['adet'], $urun['id'], $urun['adet']]);
        if ($stok->rowCount() === 0) throw new RuntimeException('Stok yetersiz: ' . $urun['ad']);
    }
    $pdo->commit();
} catch (Throwable $h) {
    $pdo->rollBack();
    throw $h;
}

Örnek bilinçli olarak kısa tutuldu; gerçek projede hata yönetimi ve günlükleme gibi katmanlar eklenmelidir.

Canlı sunucuda display_errors kapalı olmalı; hataları kullanıcıya göstermek yerine günlüğe yazdırın.

Avantajları

Bu yaklaşımı benimsediğinizde elde edeceğiniz başlıca faydalar:

  • Bakımı kolay ve okunur bir kod tabanı sağlar
  • Farklı cihaz ve tarayıcılarda tutarlı sonuç verir
  • Ekip içinde ortak bir uygulama standardı oluşturur
  • Sayfa performansını ve kullanıcı deneyimini iyileştirir

Son söz

MySQL Transaction ile Tutarlı Sipariş Kaydı, küçük ama düzenli adımlarla ustalaşılan konulardan biri. Özellikle beginTransaction / commit ve Kısa tutun başlıklarını uygulamaya geçirmek iyi bir başlangıç olur.

İlgili içerikler:

Daha fazla uygulamalı içerik için Akademi derslerine ve blog yazılarına göz atabilirsiniz.

Paylaş:
Ferdi Giden

Yazar

Ferdi Giden @admin
Sistem YöneticisiDoğrulanmış GeliştiriciBeta KullanıcıFerdiSoft KatılımcısıDoğrulanmış ProfilGüvenlik Bilinci

PHP, MySQL ve Tailwind ile kurumsal yazılımlar geliştiriyor; FerdiSoft çatısı altında ERP, WMS ve SaaS çözümleri üretiyor.

Yorumlar 0

Yorum yapmak ve tartışmaya katılmak için giriş yapın. Rozetleriniz yorumlarınızda görünür.

Henüz yorum yok. İlk yorumu siz yazın!

İlgili yazılar

Tüm yazılar
Ücretsiz Teklif Al