mysql ve autoincrement alan
mysql ve autoincrement alan
arkadaşlar çalışma esnasında mysql tablonun autoincrement alana attığı değeri nasıl bulurum. yani kısaca şu olcak:
CR_KOD= PRS00000001 gibi bi değer. sondaki 1 auto increment alandan alınacak.
CR_REF_NO=1 autoincrement alan. değeri her kayıtta artıcak.
istediğim şey. tabloya insert denildiğinde autoincrement alan hemen otomatik değer göstersin. bende onun kulağından tutup CR+9tane sıfır+1(CR0000000001) bu şekilde değerleyeyim. bunu nasıl yaparız. yoksa farklı bir tabloda her tabloya ait 1 adet integer alan bulundurup ordan kendi elimle 1 arttırıp müşteri no'sunu kendim mi vereyim.
eldeki malzemeler:
* 1 kg delphi7
* 500gr mydac
CR_KOD= PRS00000001 gibi bi değer. sondaki 1 auto increment alandan alınacak.
CR_REF_NO=1 autoincrement alan. değeri her kayıtta artıcak.
istediğim şey. tabloya insert denildiğinde autoincrement alan hemen otomatik değer göstersin. bende onun kulağından tutup CR+9tane sıfır+1(CR0000000001) bu şekilde değerleyeyim. bunu nasıl yaparız. yoksa farklı bir tabloda her tabloya ait 1 adet integer alan bulundurup ordan kendi elimle 1 arttırıp müşteri no'sunu kendim mi vereyim.
eldeki malzemeler:
* 1 kg delphi7
* 500gr mydac
-
- Kıdemli Üye
- Mesajlar: 1026
- Kayıt: 11 Şub 2005 02:12
- Konum: İstanbul
Mysql değilde başka bir veri tabanı kullansaydın bir insert trigger ı ile cr kodunu otomatik hesaplatırdın.
Delphide de field ın display özelliğini CR####### yaparak bu şekil bir görünüm sağlayabilirsin.Yani id sabit kalır ancak dediğin şekilde gözükür.
Forumda arama yaparsan bu konu hakkında bilgiye ulaşabilirsin.
Delphide de field ın display özelliğini CR####### yaparak bu şekil bir görünüm sağlayabilirsin.Yani id sabit kalır ancak dediğin şekilde gözükür.
Forumda arama yaparsan bu konu hakkında bilgiye ulaşabilirsin.
En son Ali Erdoğan tarafından 17 May 2005 04:42 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
merhaba ,
söyle bir önerim olabilir MySQL de ilgili tablonun sıradki Id numarasını SHOW TABLE STATUS FROM ... cümlesiyle elede edeceğin RecortSEt içerisinde arama yaparak bulabilirsin sana Parametre olarak vereceğin tablonun sıradaki ID nosunu veren basit bir fonksiyon yazabilirim fikir olması açısından;
kullanımı ,
kolay gelsin.
söyle bir önerim olabilir MySQL de ilgili tablonun sıradki Id numarasını SHOW TABLE STATUS FROM ... cümlesiyle elede edeceğin RecortSEt içerisinde arama yaparak bulabilirsin sana Parametre olarak vereceğin tablonun sıradaki ID nosunu veren basit bir fonksiyon yazabilirim fikir olması açısından;
Kod: Tümünü seç
function IdBul(TabloAdi: String): Double;
var
qIDBul:TQuery;
begin
try
qIDBul:=Tquery.create(nil);
with qIDBul do
begin
DatabaseName:='database_adı';
sql.add('SHOW TABLE STATUS FROM '+DatabaseName);
Active:=true;
first;
while not eof do
begin
if Fields[0].AsString=TabloAdi then
begin
Result:=FieldByName('Auto_increment').AsCurrency;
break;
end;
next;
end;
end;
finally
qIDBul.free;
end;
end;
Kod: Tümünü seç
Showmessage('Sıradaki ID No :'+CurrToStr(IdBul('Musteri')));
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
uğraşmanıza gerek yok. mysql'in sonraki versiyonlarında bu zaten otomatik olarak kaydı post ettiğinizde görünüyor. eski verisiyonlarda ise post ettikten sonra select komutu ile en son auto increment değerini tutanm değişkeni çağırabiliyorsunuz. şimdi hatırlamıyorum ama çok önemliyse bakayım tekrar. bende programı bu şekilde yazmıştım baktım post edince değer gözüküyor yeni versiyonda ona göre düzeltmiştim. [/code]
Merhaba ,
sitede çok konuşuldu
başlamak için işinize yarayacak bir makale,
http://www.delphiturkiye.com/index.php? ... utoinc.htm
iyi çalışmalar.
sitede çok konuşuldu

başlamak için işinize yarayacak bir makale,
http://www.delphiturkiye.com/index.php? ... utoinc.htm
iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Açıkcası ço fazla işime yaradığını söyleyemiyeceğim. Sanırsam anlatılan DB de otomatik olarak ID oluşturulup onun kontrolü ile ilgili Stored Procedure yazıp onu çağrıyorsunuz insertten önce.
Benim aradığım ise ben insert yaptıktan sonra oluşan ID numarasını almak. Benle beraber başkalarıda insert yapmış olabilir. O yüzden en yüksek olan ID yi almak işime gelmiyor. Inserte yaptığım verilerle sorgulama yapıp ona göre en yüksek ID yi çekiyorum fakat çok kullanılıcılı ortamda unique olmayabilecek verilerle çalışmak pek hoşuma gitmiyor. PHP den alıştığım bir fonk. olan ve mysql de geçerli mysql_insert_id () fonksiyonunu arıyorum açıkcası yada onun işlevini gerçekleştirebilicek bir fonksiyon örneği...
Benim aradığım ise ben insert yaptıktan sonra oluşan ID numarasını almak. Benle beraber başkalarıda insert yapmış olabilir. O yüzden en yüksek olan ID yi almak işime gelmiyor. Inserte yaptığım verilerle sorgulama yapıp ona göre en yüksek ID yi çekiyorum fakat çok kullanılıcılı ortamda unique olmayabilecek verilerle çalışmak pek hoşuma gitmiyor. PHP den alıştığım bir fonk. olan ve mysql de geçerli mysql_insert_id () fonksiyonunu arıyorum açıkcası yada onun işlevini gerçekleştirebilicek bir fonksiyon örneği...
Merhaba ,
şimdi siz Firebir de mi nsıl yapılacağını soruyorsunuz yoksa MySQL de
mi? , firebird de, autoinc alanı siz generatorler ile yapabilirsiniz ve kontrol sizde olur insert ederken bu bilgiye ihtiyacınız olmak orunda olduğundan insert sonrasında aynı SP yi çağırark sıradaki ID yi basit bir şekilde alaiblirsiniz. MySQL de yukarıda bahsettiğim geçen yöntemin sağlam olduunu düşünüyorum.
şimdi siz Firebir de mi nsıl yapılacağını soruyorsunuz yoksa MySQL de
mi? , firebird de, autoinc alanı siz generatorler ile yapabilirsiniz ve kontrol sizde olur insert ederken bu bilgiye ihtiyacınız olmak orunda olduğundan insert sonrasında aynı SP yi çağırark sıradaki ID yi basit bir şekilde alaiblirsiniz. MySQL de yukarıda bahsettiğim geçen yöntemin sağlam olduunu düşünüyorum.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr