Apakah ada cara untuk menentukan, misalnya 4 nilai berbeda untuk kolom varchar di MS SQL Server 2008?
Misalnya, saya memerlukan kolom bernama Frekuensi (varchar) yang hanya menerima 'Harian', 'Mingguan', 'Bulanan', 'Tahunan' sebagai nilai yang memungkinkan
Apakah ini mungkin untuk ditetapkan dalam SQL Server Management Studio saat membuat tabel?
sql
sql-server-2008
ssms
Adam
sumber
sumber
Jawaban:
Pernahkah Anda melihat menambahkan
check constraint
pada kolom itu yang akan membatasi nilai? Sesuatu seperti:sumber
Frequency varchar(200)
Anda menginginkan batasan cek .
Anda menginginkan sesuatu seperti:
Anda juga dapat mengimplementasikan batasan pemeriksaan dengan fungsi skalar, seperti yang dijelaskan pada tautan di atas, yang saya lebih suka melakukannya.
sumber
Secara pribadi, saya akan mengkodekannya sebagai tinyint dan:
Alasan:
Diperlukan rata-rata 8 byte untuk menyimpan teks, 1 byte untuk tinyint. Lebih dari jutaan baris, ini akan membuat perbedaan.
Bagaimana dengan pemeriksaan? Apakah "Daily" sama dengan "DAILY"? Dibutuhkan sumber daya untuk melakukan perbandingan semacam ini.
Terakhir, bagaimana jika Anda ingin menambahkan "Dua mingguan" atau "Setiap Jam"? Ini membutuhkan perubahan skema saat Anda bisa menambahkan baris baru ke tabel pencarian.
sumber
Saat Anda mengedit tabel,
Klik Kanan -> Periksa Batasan -> Tambah -> Ketik sesuatu seperti
Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly')
di bidang ekspresi dan nama kendala yang baik di bidang (Nama).Kamu selesai.
sumber