Masalah:
Anda ingin menemukan nama batasan dalam tabel di SQL Server.
Contoh:
Kami ingin menampilkan nama-nama kendala dalam tabel student .
Solusi:
SELECT TABLE_NAME,
CONSTRAINT_TYPE,CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME=’student’;
Ini hasilnya:
| TABLE_NAME | CONSTRAINT_TYPE | CONSTRAINT_NAME |
|---|---|---|
| siswa | KUNCI UTAMA | PK__siswa__3213E83F357C7D1D |
| mahasiswa | UNIK | UQ__student__24E2EDD2AC2A7D87 |
| mahasiswa | PERIKSA | CK__siswa__usia__4E88ABD4 |
| mahasiswa | KUNCI ASING | FK__student__country__4F7CD00D |
Diskusi:
Gunakan tampilan table_constraints di information_schema skema. Kolom table_name memberi Anda nama tabel tempat batasan didefinisikan, dan kolom constraint_name berisi nama kendala. Kolom constraint_type menunjukkan jenis kendala:PRIMARY KEY untuk tipe kunci utama, FOREIGN KEY untuk jenis kunci asing, UNIQUE untuk nilai unik, dan CHECK untuk pemeriksaan kendala.
Misalnya, kunci utama di student tabel memiliki nama kendala PK_student_3213E83F357C7D1D . constraint_type kolom memberi Anda informasi tentang jenis setiap kendala; untuk primary key adalah PRIMARY KEY . table_name kolom dalam tampilan ini menunjukkan tabel mana yang berisi batasan ini.
Namun, jika Anda ingin memilih DEFAULT kendala dari database, gunakan kueri ini di bawah ini.
SELECT c.name, c.definition FROM sys.default_constraints c JOIN sys.objects o ON o.object_id = c.parent_object_id WHERE o.name ='student';
Ini hasilnya:
| nama | definisi |
|---|---|
| DF__student__name__4D94879B | ("tidak diketahui") |
Nama DEFAULT constraint disimpan dalam nama kolom, tetapi nilainya ada di kolom definition . Bergabung dengan tampilan sys.default_constraint s dan sys.objects memungkinkan kita untuk memilih hanya data untuk tabel tertentu (dalam contoh kita, tabel student ) dengan menggunakan klausa WHERE. Nama kendala berisi nama tabel (student ) dan nama kolom (name ).