Masalah:
Anda ingin mengetahui nama default batasan dalam tabel di MySQL.
Contoh:
Dalam database kami, kami membuat dua tabel, country dan student , dengan batasan berikut:PRIMARY KEY constraint (id kolom dalam tabel country dan student ), FOREIGN KEY (kolom country_id dalam tabel student ), DEFAULT (nama kolom dalam tabel student ), UNIQUE (kolom name dalam tabel country dan kolom personal_number dalam tabel student ), dan CHECK (kolom age dalam tabel student ).
Solusi:
CREATE TABLE country ( id int NOT NULL primary key, name varchar(100) UNIQUE ); CREATE TABLE student ( id int NOT NULL primary key, name varchar(100) NOT NULL DEFAULT 'unknown', personal_number varchar(100) UNIQUE, age int CHECK(age>15), country_id int, FOREIGN KEY(country_id) REFERENCES country(id) );
Mari kita tampilkan bagaimana MySQL menamai batasan tabel ini secara default. Gunakan kueri ini untuk melihatnya:
SELECT TABLE_NAME, CONSTRAINT_TYPE, CONSTRAINT_NAME FROM information_schema.table_constraints WHERE table_name='country' OR table_name='student';
Ini hasilnya:
| TABLE_NAME | CONSTRAINT_TYPE | CONSTRAINT_NAME |
|---|---|---|
| negara | KUNCI UTAMA | PRIMER |
| negara | UNIK | nama |
| mahasiswa | KUNCI UTAMA | PRIMER |
| mahasiswa | UNIK | nomor_pribadi |
| mahasiswa | KUNCI ASING | siswa_ibfk_1 |
| mahasiswa | PERIKSA | mahasiswa_chk_1 |
Diskusi:
Saat kami membuat tabel kami, kami menetapkan batasan untuk beberapa kolom. Namun, kami tidak menentukan nama untuk batasan ini, sehingga diberi nama secara default di MySQL. Di MySQL, tipe batasan default adalah PRIMARY KEY constraint , FOREIGN KEY , UNIQUE , dan CHECK . Bagaimana nama default dibuat untuk batasan?
Batasan PRIMARY KEY constraint hanya bernama PRIMARY , karena selalu ada satu kunci utama dalam sebuah tabel. Ada dua kendala bernama PRIMARY pada hasil di atas, tetapi tabel tempat mereka berada berbeda.
Untuk FOREIGN KEY , nama mengikuti konvensi:nama tabel, garis bawah (‘_ ’), ‘ibfk ', garis bawah lainnya ('_ ’), dan sebuah angka. Untuk contoh kita, ini adalah student_ibfk_1 dalam tabel student .
Nama default untuk CHECK batasannya mirip dengan kunci asing. Dimulai dengan nama tabel, garis bawah (‘_ ’), ‘chk ', garis bawah lainnya (' _ ’), dan sebuah angka. Untuk contoh kita, ini adalah student_chk_1 dalam tabel student .
Nama default dari UNIQUE kendala adalah nama kolom itu sendiri. Untuk contoh kita, ini adalah personal_number dalam tabel student . Ketika ada beberapa kolom dengan UNIQUE kendala, menggunakan nama kolom pertama dalam definisi kendala.