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.