MySQL de AutoIncrement sayısını değiştirmek

MySQL veritabanı programcılara oldukça yararlı olan AutoIncrement index yapısını sunmaktadır. Bu yapı sayesinde oluşturduğumuz tablolarda primary key olarak belirlediğimiz sütunun unique kalması sağlanmaktadır. Bu durum ise her eklenen kayıtla birlikte bu sütun verisinin artırılması ile sağlanmaktadır. Her eklenen verinin ardından MySQL bu sütuna ait değeri bir artırıp içeriği sisteme eklemektedir. Ancak bazen bu alanın sıfırlanması veya herhangi bir sayıya setlenmesi gerekebilmektedir. Örneğin bir proje için tablo oluşturdunuz ve içerisine bazı test verileri eklediniz. Sonrasında bu tablodaki içerikleri silip autoincrement edilecek sütunun tekrardan resetlenmesini isteyebilirsiniz. Bu yöntemlerden bazıları şu şekildedir:
  1. AutoIncrement Verisinin Direkt Sıfırlanması
  2. Tablonun Truncate Edilmesi
  3. Tablonun Silinip Tekrardan Oluşturulması
1. AutoIncrement Verisinin Direkt Sıfırlanması: 
Aşağıda bulunan alter table komutu ile auto_increment verisinin 1 olarak setlenmesi sağlanmaktadır:
ALTER TABLE {TABLOISMI} AUTO_INCREMENT = 1;
Not: Tabloda bulunan kayıtın değerinin altını veya aynısını setleyemezsiniz. Yani tablonuzda 4 idli herhangi bir veri varsa, ve yukarıda bulunan komutu 4 olarak setleyerek çalıştırmak isterseniz, hata ile karşılaşacaksınızdır. MyISAM yapısı kullanılan tablolarda eger yukarıdaki belirtilen sekilde bir yanlıs kayıt setlenmek istenirse, sistem otomatik olarak en yüksek olan kayıt +1 olarak setlemeyi gerçekleştirecektir. InnoDB yapısındaki tablolarda ise komut calısmayacaktır.

2. Tablonun Truncate Edilmesi: 
Aşağıda bulunan truncate table komutu ile auto_increment verisinin 0 olarak setlenmesi sağlanmaktadır:
TRUNCATE TABLE {TABLOISMI};
3. Tablonun Silinip Tekrardan Oluşturulması: 
Dİğer bir yöntemde tablonun silinip tekrardan oluşturulmasıdır. Pek kullanışlı bir yöntem olmasa da bu işlemde isteneni sağlamaktadır:
DROP TABLE {TABLOISMI}; 
CREATE TABLE {TABLOISMI} { ... };

comments powered by Disqus