Urunler Tablosu
CREATE TABLE Urunler ( ID INT PRIMARY KEY NOT NULL IDENTITY(1,1), urun_adi VARCHAR(20), ozet VARCHAR(255) )
DATALENGTH Fonksiyonu ile Byte Uzunluk Değeri Öğrenelim
Ürünler tablosuna ekleyeceğimiz değerlerin byte karşılığını (byte uzunluğunu) öğrenmek için SQL Server'da bulunan DATALENGTH() fonksiyonu kullanalım.Byte Değerlerini Kontrol Edelim
SELECT DATALENGTH('Çamaşır Makinesi') CamasirMakinasiByteUzunluk, DATALENGTH('Bulaşık Makinesi') BulasikMakinasiByteUzunluk
Byte Uzunluk Değerleri
Byte uzunluk değerleri görüldüğü gibi varchar(20) sınırlamasına takılmadan insert (ekleme) işlemini yapacaktır.
Bu değerleri tabloya ekleyelim.
Başarılı Bir Insert (Ekleme) İşlemi Yapalım
Ürünler Tablosu InsertINSERT INTO Urunler (urun_adi, ozet) VALUES ('Çamaşır Makinesi', 'Çamaşır makinesi, çamaşır yıkamak için kullanılan bir beyaz eşyadır.') INSERT INTO Urunler (urun_adi, ozet) VALUES ('Bulaşık Makinesi', 'Bulaşık makinesi, evlerde bulaşıkları daha hızlı ve ekonomik olarak yıkamak, yaşam standardını arttırmak için üretilmiş bir makinedir.')
Birkaç kayıt ekledikten sonra tablodaki kayıtları sorgulayalım.
Insert Sonuç
Hatalı Bir Insert (Ekleme) İşlemi Yapalım
Şimdi ise daha uzun isimli bir ürün adı girelim. 20 karakter sınırını aşan şekilde. Çünkü urun_adi kolonu VARCHAR(20) olarak tanımlı. Gireceğimiz yeni değerin byte uzunluğunu kontrol edelimByte Değerlerini Kontrol Edelim
SELECT DATALENGTH('Burası Çok Uzun İsimli Bir Ürün Adı') YeniDegerByteUzunluk
Girilen bu ürün adının byte uzunluk sonucuna bakalım.
Yeni Değer Byte Uzunluk Kontrolü
Görüldüğü gibi byte uzunluk değeri 41 olarak görülmektedir. Bizim sütunumuz ise varchar(20) yani 20 byte değer sınırı olduğu için sınırı aşan insert yapıldığında String or binary data would be truncated in table hatası karşımıza çıkacaktır.
Alan sınırını aşan insert işlemi yapalım.
Ürünler Tablosu Insert
INSERT INTO Urunler (urun_adi, ozet) VALUES ('Burası Çok Uzun İsimli Bir Ürün Adı', 'Bu ürün genel amaçlı olarak adlandırıldığı için özet bilgisi bulunmamaktadır.')
Görüldüğü gibi ilgili karakter sınırı aşılmış durumdadır. Bu durumda o alana girilen karakter sınırı 20'yi aştığı için VARCHAR(20) yerine VARCHAR(50) gibi bir sütun kullanmak daha da işimize yarayacaktır.
Insert Sonuç
Tablomuzu Alter Edelim
Tablomuzun ilgili kolon tiplerini güncelleyerek daha fazla karakteri içerisine alabilecek şekilde ALTER edelim.Urunler Tablosu
ALTER TABLE Urunler ALTER COLUMN urun_adi VARCHAR(50)
ALTER sonrası tablodaki urun_adi kolonununa ait karakter sınırı değişti.
Insert Sonuç
Tekrardan aynı ekleme işlemini yapmaya çalışalım.
Ürünler Tablosu Insert
INSERT INTO Urunler (urun_adi, ozet) VALUES ('Burası Çok Uzun İsimli Bir Ürün Adı', 'Bu ürün genel amaçlı olarak adlandırıldığı için özet bilgisi bulunmamaktadır.')
Yeni kaydın sorunsuz bir şekilde eklendiğini görmekteyiz.
Insert Sonuç