Saya punya meja:
table votes (
id,
user,
email,
address,
primary key(id),
);
Sekarang saya ingin membuat kolom pengguna, email, alamat unik (bersama).
Bagaimana saya melakukan ini di MySql?
Tentu saja contohnya hanyalah ... contoh. Jadi tolong jangan khawatir tentang semantiknya.
Saya punya tabel MySQL:
dan KUNCI UNIK berfungsi seperti yang diharapkan, ini memungkinkan beberapa baris NULL id_box_elements dan id_router.
Saya menjalankan MySQL 5.1.42, jadi mungkin ada beberapa pembaruan pada masalah yang dibahas di atas. Untungnya itu berhasil dan mudah-mudahan akan tetap seperti itu.
sumber
Indeks unik multi kolom tidak berfungsi di MySQL jika Anda memiliki nilai NULL berturut-turut karena MySQL memperlakukan NULL sebagai nilai unik dan setidaknya saat ini tidak memiliki logika untuk mengatasinya dalam indeks multi-kolom. Ya perilakunya gila, karena membatasi banyak aplikasi yang sah dari indeks multi-kolom, tetapi itu adalah apa ... Sampai sekarang, itu adalah bug yang telah dicap dengan "tidak akan memperbaiki" pada MySQL bug-track ...
sumber
ENGINE BDB
, dan, 2) ini perilaku yang didokumentasikan , meskipun, IMHO, tidak cukup terdokumentasi mengingat betapa mengejutkan / tidak menyenangkannya itu. Lihat bug MySQL 25544 bugs.mysql.com/bug.php?id=25544 untuk diskusi.Sudahkah Anda mencoba ini?
sumber
UNIQUE KEY
thekey` (user
,email
,address
) `. Saya menggunakan MYSQL versi 5.5.24 Anda dapat mengatur ini bahkan di PHPMYADMIN jika Anda menggunakannya. Saya menggunakan versi 3.5.1 dari PMA.Ini berfungsi untuk versi mysql 5.5.32
sumber
MySql 5 atau lebih berperilaku seperti ini (saya baru saja menguji):
Contoh: PRODUCT_NAME, PRODUCT_VERSION 'gelas', nol 'gelas', nol 'anggur', 1
Sekarang jika Anda mencoba memasukkan ('wine' 1) lagi itu akan melaporkan pelanggaran kendala Semoga ini bisa membantu
sumber
Anda dapat menambahkan indeks unik beberapa kolom melalui phpMyAdmin . (Saya menguji dalam versi 4.0.4)
Arahkan ke halaman struktur untuk tabel target Anda. Tambahkan indeks unik ke salah satu kolom. Buka daftar Indeks di bagian bawah halaman struktur untuk melihat indeks unik yang baru saja Anda tambahkan. Klik ikon edit, dan dalam dialog berikut Anda dapat menambahkan kolom tambahan ke indeks unik itu.
sumber
Saya melakukannya seperti ini:
Konvensi saya untuk yang unik
index_name
adalahTableName_Column1_Column2_Column3_uindex
.sumber
Untuk menambahkan indeks unik, diperlukan:
1) table_name
2) index_name
3) kolom di mana Anda ingin menambahkan indeks
Dalam kasus Anda, kami dapat membuat indeks unik sebagai berikut:
sumber
Jika Anda ingin menghindari duplikat di masa depan. Buat kolom lain say id2.
Sekarang tambahkan unik pada dua kolom:
sumber
Jika Anda membuat tabel di mysql kemudian gunakan yang berikut:
sumber
Pertama-tama singkirkan duplikat yang ada
Kemudian tambahkan batasan unik
Verifikasi kendala dengan
Perhatikan bahwa pengguna, email, alamat akan dianggap unik jika salah satu dari mereka memiliki nilai nol di dalamnya.
sumber
Untuk PostgreSQL ... Tidak berfungsi untuk saya dengan indeks; itu memberi saya kesalahan, jadi saya melakukan ini:
PostgreSQL memberi indeks unik namanya sendiri. Saya kira Anda dapat mengubah nama indeks dalam opsi untuk tabel, jika perlu diubah ...
sumber