create adlı üyeden alıntı: mesajı görüntüle
Merhaba Arkadaşlar,

Ne zamandır kafama takılan bir soru var. Alternatif yollarını biliyorum fakat doğru olanı öğrenmek istiyorum.

Aşağıdaki tabloda id sutünu var mesela şimdi burada yeni veri geldiğinde 1,2,3,4 diye devam edicek. Peki bunu şu şekilde yapmak mümkün mü
"AB1234BC3211", "AB1235BC3212", "AB1235BC3213" veya türevleri şeklinde.
create table tablo_adi (
id integer(11) not null auto_increment,
primary key(id)
);
Not : Integer'ın sadece sayısal değerler içerdiğini biliyorum öğrenmek istediğim integer dışında yukarıdaki gibi yapılabilir mi?
Merhaba,

Öncelikle böyle fantastik bir düşünce ve soruyu türettiğiniz için teşekkür ederim, üzerinde uğraşmak eğlenceli oldu diyebilirim.

Kullanmış olduğunuz alternatif yolları belirtmemişsiniz, yine de ben kendi yaptığım şekilde bir paylaşımda bulunacağım.

Bilindiği gibi auto_increment ifadesi sayısal değerler dışında kullanılamaz, yalnız, alfanümerik bir veri tipinin karakterleri modifiye edilerek sayısal değerlerde artış sağlanıp, alfanümerik olan veri tipi artan sayı ile güncellenebilir.

Bu durumda bize yardımcı olacak olan MySQL elementleri; trigger, concat ve substring'dir.

Örnek olarak;

Tablo Yaratımı:

15'er karakter uzunluğunda 2 adet varchar türünde veri değişkeni ile idtest tablosu yaratılır.

create table idtest(
`id` varchar(15),
`name` varchar(15) not null,
primary key(id)
);
idtest tablosu içerisine bir defaya mahsus "AB1235BC3213" alfanümerik id değerini alacak bir veri giriş sorgusu gerçekleştirilir.

insert into idtest(id,name)values('AB1235BC3213','test');
idtest tablosu içerisine girilecek olan her yeni kayıt için "idtrig" isimli bir tetikleyici yaratılır. Bu tetikleyici, son girilen id'yi artış sağlanması istenen 9. karakterinden itibaren bölümledikten sonra, 9. karakterden itibaren kalan ve maksimum 5 karakter olabilecek olan sayı üzerine 1 ekleyerek elde edilen sayı karakterini tekrar alfanümerik kısma ekleyerek yeni bir değer oluşturur.

create trigger idtrig before insert on `idtest`
for each row
set new.id=(select concat('AB1235BC',(select substring((select id from idtest order by id desc limit 1),9,5))+1));
Veri Girişi:

idtest tablosuna "test" isimli yeni bir veri girişi yapılır, oluşturulacak olan yeni verinin alfanümerik id'sinin arttırılmak istenen nümerik kısmı güncellenecektir.

insert into idtest(name)values('test');
Teşekkürler.
İyi çalışmalar.