Rails ve PostgreSQL: Constraint'ler | M. Serhat Dündar
Rails'in change_column_null metodu ilgili sütuna not null CONSTRAINT ekler:
PostgreSQL dokümanı aradaki farkı istatistiki olarak tanımlamıyor. Ancak benchmark gerçekleştirmiş bir Stackoverflow kullanıcısına göre ikisi arasında istatistiki olarak anlamlı olmayan %0.5'lik bir fark bulunmakta.
add_presence_constraint string türündeki verilerin varlığını kontrol etmek için kullanılır. add_null_constraint'ten farklı olarak boş string'lerin sütuna yazılmasına engel olur. Yani:
Neden CONSTRAINT değil de CHECK?
Sadece gerçekten unique olduğundan emin olduğunuz alanlara unique constraint ekleyin. Örneğin şehir/ilçe isimleri unique değildir.
code ve identifier gibi nesneleri birbirlerinden ayırt etmek için kullandığımız alanlar unique_constraint'e iyi bir aday olabilirler.
unique_constraint, diğer constraint'lerden farklı olarak bir index oluşturarak çalışır. Örneğin:
Eğer bir unique constraint'in, ilgili transaction'ın en son kontrolü olarak çalışmasını istiyorsanız defer edebilirsiniz:
add_unique_constraint :books, :isbn, deferred: true