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
).