Masalah:
Anda ingin mengetahui nama default batasan dalam database SQL Server.
Contoh:
Dalam database kami, kami membuat dua tabel, country
dan student
, dengan batasan berikut:PRIMARY KEY
(kolom id
di tabel country
dan student
), FOREIGN KEY
(kolom country_id
dalam tabel student
), DEFAULT
(kolom name
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 references country(id) );
Mari kita tampilkan bagaimana SQL Server menamai batasan tabel ini secara default. Gunakan kueri ini untuk melihatnya:
SELECT TABLE_CATALOG, TABLE_NAME, CONSTRAINT_TYPE,CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
Ini hasilnya:
TABLE_NAME | CONSTRAINT_TYPE | CONSTRAINT_NAME |
---|---|---|
negara | KUNCI UTAMA | PK__country__3213E83F7EFD826D |
negara | UNIK | UQ__country__72E12F1BB69A1D8C |
mahasiswa | KUNCI UTAMA | PK__siswa__3213E83F357C7D1D |
mahasiswa | UNIK | UQ__student__24E2EDD2AC2A7D87 |
mahasiswa | PERIKSA | CK__siswa__usia__4E88ABD4 |
mahasiswa | KUNCI ASING | FK__student__country__4F7CD00D |
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. Bagaimana nama default untuk batasan dihasilkan?
Di SQL Server, nama batasan default dimulai dengan awalan tertentu:PK
, UQ
, CK
, atau FK
.
Nama default untuk PRIMARY KEY
batasan dimulai dengan ‘PK
’, diikuti dengan garis bawah (‘__
’), nama tabel, lebih banyak garis bawah (‘__
'), dan nomor urut heksadesimal yang dihasilkan oleh SQL Server. Dalam contoh kita, PK__country__3213E83F7EFD826D
adalah nama default untuk batasan kunci utama dalam tabel country
dan PK__student__3213E83F357C7D1D
adalah nama default untuk batasan kunci utama dalam tabel student
.
Nama default untuk FOREIGN KEY
batasan dimulai dengan ‘FK
’, diikuti dengan garis bawah (‘__
’), nama tabel, lebih banyak garis bawah (‘__
'), nama tabel terkait, dan nomor urut heksadesimal yang dihasilkan oleh SQL Server. Dalam contoh kita, FK__student__country__4F7CD00D
adalah nama default untuk batasan kunci asing dalam tabel student
yang setara dengan kolom id
dalam tabel country
.
Nama default untuk UNIQUE
batasannya adalah ‘UQ
', menggarisbawahi ('__
’), nama tabel, lebih banyak garis bawah (‘__
'), dan nomor urut heksadesimal yang dihasilkan oleh SQL Server. Dalam contoh kita, UQ__country__72E12F1BB69A1D8C
adalah nama default dari batasan unik untuk nama kolom di tabel country
, dan UQ__student__24E2EDD2AC2A7D87
dari UNIQUE
batasan untuk nama kolom tabel student
. UNIQUE
kendala dengan beberapa kolom diberi nama dalam pola yang sama.
Nama default untuk CHECK
batasannya adalah ‘CK
', menggarisbawahi ('__
’), nama tabel, lebih banyak garis bawah (‘__
'), nama kolom, lebih banyak garis bawah ('__'), dan nomor urut heksadesimal yang dihasilkan oleh SQL Server. Dalam contoh kita, CK__student__age__4E88ABD4
adalah nama default untuk CHECK
batasan untuk kolom age
tabel student
.