MYSQL de Otomatik Büyük Küçük Harf Kaydetmek

Standard

Herkese selam,

Uzun bir süre sonra merak ettiğim ve denediğim yeni bir konu ile karşınızdayım 🙂

Dün akşam bir projemizde veri tabanı analizi yaparken arkadaşımla aklımıza bir soru geldi; “Acaba mysql de kaydedilen datayı otomatik olarak küçük büyük harfe çevirebilen bir özellik varmıydı?”

Bir çoğu insan bunu setter metodunda niye yapmıyorsun diyebilir yada mvc yazmayanlar da direk datayı yazarken php fonksiyonları ile neden yapmıyoruz diyebilir. Tercih sebebidir, bu konu akşam 22:30 da merak ile ortaya çıktı 😉

Bugün sabah biraz düşündüm taşındım ve bunu trigger ile çözebildim. Dilerseniz sözü daha uzatmadan hemen çözüme geçelim;

Tablo yapısı:

CREATE TABLE `onur_deneme` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `language` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

Şimdi de trigger oluşturalım;

CREATE TRIGGER upper_insert BEFORE INSERT ON onur_deneme FOR EACH ROW
SET NEW.language = UPPER(NEW.language);

CREATE TRIGGER upper_update BEFORE UPDATE ON onur_deneme FOR EACH ROW
SET NEW.language = UPPER(NEW.language);

Belki fark etmişsinizdir kalın yazdım, üstteki insert öncesi tetiklenecek ve alttaki güncelleme işlemi de update öncesi tetiklenecek ve yazılan ne ise otomatik olarak büyük harfe çevirecek..

Kayıt yapalım:

INSERT INTO `onur_deneme` (`id`, `language`) VALUES (NULL, 'tr'), (NULL, 'en');

ve Sonuç:

mysqlupper

Trigger ile pek çok zaman kendi kendine tetikletebilir farklı işlemler yapabilirsiniz. Açıklayıcı olabilmişimdir umarım..

İyi çalışmalar dilerim..

One thought on “MYSQL de Otomatik Büyük Küçük Harf Kaydetmek

  1. Alpaslan Güler

    Merrhaba.

    tablomda langıuage kolonundan fazla sayıda kolon var.
    Örneğin: il ilce address ad soyad ogrencino sinif dersadi1 dersadi2 dersadi3 gibi sayı fazla. İlk veri girerken ya da update ederken tablodaki tüm kolonlara büyük harf ile giriş ve update yapılması için trigger komutu ne olmalı.
    Yardım edebilirmisiniz.
    Teşekkür ederim.

    CREATE TRIGGER upper_insert BEFORE INSERT ON sinif_5_c FOR EACH ROW
    SET NEW.address = UPPER(NEW.address);

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir