2010-08-11 15 views
7

Birincil anahtarım olarak bir VARCHAR kullanıyorum.MySQL - VARCHAR'ı AUTO INCREMENT olarak kullanmak için Birincil Anahtar

CREATE TABLE IF NOT EXISTS `campaign` (
    `account_id` BIGINT(20) NOT NULL, 
    `type` SMALLINT(5) NOT NULL, 
    `id` VARCHAR(16) NOT NULL AUTO_INCREMENT PRIMARY KEY 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

ancak bu işler: Ben otomatik artış o (baz 62, üst/alt durumda, sayılar), Ancak, aşağıda kodu (bariz nedenlerle) başarısız istiyorum

CREATE TABLE IF NOT EXISTS `campaign` (
    `account_id` BIGINT(20) NOT NULL, 
    `type` SMALLINT(5) NOT NULL, 
    `id` VARCHAR(16) NOT NULL PRIMARY KEY 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

neler 'id' kelimesinin artışını takip etmenin en iyi yolu benim mi? (Auto_increment çalışmadığı için). Mevcut kimlik yinelemesini içeren başka bir tablo yapmam gerekiyor mu? Yoksa bunu yapmanın daha iyi bir yolu var mı?

DÜZENLEME: INT kullanmanın bir auto_increment birincil anahtarının kullanmanın mantıksal yolu olduğunu bildiğimi açıklığa kavuşturmak istiyorum. Bu soru, gördüğüm önceki diyaloga cevap olarak.

birer numaralı bir dosya oluşturmak ve sonra: Teşekkürler

+0

Offtopic: MyISAM'ı kullanmak istediğinizden emin misiniz? İlişkisel veritabanı için, yabancı anahtarları oluşturmak için MySQL'de innoDB'ye ihtiyacınız var. –

+1

Hayır, hiç de emin değilim. Oldukça uzun bir süredir MySQL kullanıyorum, ancak çoğu zaman MyISAM'in kullanılması gerektiği söylendi ve ben de bununla birlikte gittim: P –

cevap

5

Bir INT alanını
kullanmak ve soruna bir çözümün seçilmiş zamanda ne istersen biçimine

+0

Kimlik benim kimliğim olarak geçtiği için bu mümkün değil URL’nin –

+0

Ayrıca, özellikle kimliği manuel olarak artırmanın en iyi yolunu arıyorum. Bit.ly ve muhtemelen Tiny URL'nin çok benzer bir şey yaptığını biliyorum. –

+0

@Kenny lol programcı için her şey mümkündür :) sorguya geçmeden önce dönüştürün. önemli bir şey değil. Bu url kısaltıcılar dediğim gibi yaparlar. –

0

örnek çevirmek zorunda Bir fonksiyon ile artış.

dosya adı önek olabilir ve dosya ikili içeriği bir sayıyı temsil eder.

işleve invoque reg yeni kimliği gerektiğinde

Örnek "A_PREFIX-" dosyası adı alan için id oluşturmak için kullandığımız wich olan

String generateID(string A_PREFIX){ 
     int id_value = parsetoInt(readFile(A_PREFIX).getLine()) 
     int return_id_value = id_value++ 
     return return_id_value 
    } 

.

İlgili konular