Apa ikon kunci perak terbalik ini

11

Saya mewarisi SQL Server 2005 server pihak ketiga dan database untuk melihat agar dapat menghasilkan laporan dan dashboard.

Di satu meja, saya menemukan ikon baru: kunci terbalik biru-perak, di samping kunci utama dan asing saya yang lain.

Ketika saya klik kanan, menu konteks memberi saya pilihan untuk "Script Constraint as", tetapi ketika saya mencoba untuk "Memodifikasi", itu membuka formulir desain kolom (seperti kunci primer), namun, itu muncul di Bagian "Indeks", bukan kendala.

Seseorang tahu apa namanya dan untuk apa ia digunakan?

Tombol terbalik

Philippe
sumber

Jawaban:

12

Ini menandakan kendala unik. Dalam SQL Server, kendala unik sebenarnya diimplementasikan sebagai indeks di bawah selimut; inilah sebabnya ia muncul di bawah Indexessimpul juga (saya tidak bisa memberi Anda penjelasan yang baik tentang mengapa itu tidak paling tidak terdaftar di bawah Constraintssimpul, atau mengapa mereka memilih tombol terbalik bukan hanya warna yang berbeda).

Anda harus melihat hasilnya di sini untuk memvalidasi bahwa ini sebenarnya diterapkan sebagai indeks:

SELECT index_id, type_desc, is_unique_constraint
  FROM sys.indexes
  WHERE name = N'IX_tblCustIndex';

Anda mengatakan bahwa Anda melihat "Script Constraint As ..." - jika Anda menindaklanjutinya, itu akan memberi Anda skrip seperti:

ALTER TABLE [dbo].[tblCustIndex] ADD UNIQUE NONCLUSTERED 
(
  [some_column] ASC
) WITH (...a bunch of default options...)

Tapi jangan jalankan karena sintaks ini tidak menggunakan nama dan itu hanya akan membuat kendala unik kedua yang berlebihan ...

Berikut adalah repro yang sangat sederhana, dan bukti bahwa saya mendapatkan kunci terbalik bahkan dengan sintaks yang sangat mendasar, pada 2014:

CREATE TABLE dbo.foo(id INT UNIQUE);

masukkan deskripsi gambar di sini klik untuk memperbesar

Sekarang, Anda bisa mendapatkan ikon yang berbeda jika Anda membuat indeks unik secara eksplisit (dan satu-satunya perbedaan yang akan Anda lihat sys.indexesadalah nama dan nilai is_unique_constraint):

masukkan deskripsi gambar di sini klik untuk memperbesar

Untuk perbedaan lain, lihat jawaban Stack Overflow ini .

Aaron Bertrand
sumber
1
Apakah spesifik untuk SQL2005? Karena ketika saya mencoba menambahkan indeks UNIK, saya mendapatkan ikon berbeda (semacam pohon terbalik). Dan ketika saya menambahkan Constraint, saya mendapatkan semacam ikon tabel kurung. Sepertinya saya tidak dapat mereproduksi ikon ini.
Philippe
@Filippe Jawaban yang diperbarui.
Aaron Bertrand
Terima kasih. Itu penjelasan yang terperinci, dan cepat! :-)
Philippe