Bir veritabanı şemasını yönetmek için Rails geçişlerini kullanıyorum ve tamsayı olmayan bir değeri birincil anahtar olarak (özellikle bir dize) kullanmak istediğim basit bir tablo oluşturuyorum. Sorunumdan soyutlamak için, employees
çalışanların alfanümerik bir dizeyle tanımlandığı bir tablo olduğunu varsayalım, örneğin "134SNW"
.
Tabloyu şu şekilde bir geçişte oluşturmayı denedim:
create_table :employees, {:primary_key => :emp_id} do |t|
t.string :emp_id
t.string :first_name
t.string :last_name
end
Bunun bana verdiği şey, çizgiyi tamamen görmezden geldi t.string :emp_id
ve ileri gitti ve onu bir tamsayı sütunu yaptı . Bir execute
çağrıda SQL'i yazmak zorunda kalmadan, rayların PRIMARY_KEY kısıtlamasını (PostgreSQL kullanıyorum) benim için oluşturmasını sağlamanın başka bir yolu var mı?
NOT : Dize sütunlarını birincil anahtar olarak kullanmanın en iyisi olmadığını biliyorum, bu nedenle lütfen yalnızca bir tamsayı birincil anahtar eklemeyi söyleyen yanıtlar almayın. Yine de ekleyebilirim, ancak bu soru hala geçerlidir.