ไอคอนกุญแจสีเงินคว่ำนี้คืออะไร


11

ฉันสืบทอดเซิร์ฟเวอร์และฐานข้อมูลบุคคลที่สามของ SQL Server 2005 เพื่อให้สามารถสร้างรายงานและแดชบอร์ดได้

ในตารางหนึ่งฉันพบไอคอนใหม่: คีย์คว่ำสีฟ้าเงินข้างๆคีย์หลักและกุญแจต่างประเทศของฉัน

เมื่อฉันคลิกขวาเมนูบริบทให้ตัวเลือก "ข้อ จำกัด ของสคริปต์เป็น" แต่เมื่อฉันพยายามที่จะ "แก้ไข" มันจะเปิดแบบฟอร์มการออกแบบคอลัมน์ (เช่นคีย์หลัก) และยังปรากฏใน ส่วน "ดัชนี" ไม่ใช่ข้อ จำกัด

มีคนรู้ว่ามันถูกเรียกว่าอะไรและใช้ทำอะไร?

คีย์คว่ำ

คำตอบ:


12

มันบ่งบอกถึงข้อ จำกัด ที่ไม่เหมือนใคร ใน SQL Server ข้อ จำกัด ที่ไม่ซ้ำกันถูกนำไปใช้จริงเป็นดัชนีภายใต้การครอบคลุม นี่คือเหตุผลที่มันปรากฏภายใต้Indexesโหนดเช่นกัน (ฉันไม่สามารถให้คำอธิบายที่ดีเกี่ยวกับสาเหตุที่มันไม่ได้อยู่ในรายการอย่างน้อยในConstraintsโหนดและทำไมพวกเขาจึงเลือกคีย์คว่ำแทนที่จะเป็นสีอื่น)

คุณควรเห็นผลลัพธ์ที่นี่เพื่อตรวจสอบว่าสิ่งนี้ถูกนำไปใช้จริงเป็นดัชนี:

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

คุณบอกว่าคุณเห็น "ข้อ จำกัด ของสคริปต์เป็น ... " - หากคุณทำตามนั้นจะทำให้สคริปต์เป็นดังนี้:

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

แต่อย่ารันเพราะไวยากรณ์นี้ไม่ได้ใช้ชื่อและมันจะสร้างข้อ จำกัด ที่ไม่ซ้ำกันซ้ำที่สอง ...

นี่เป็นข้อผิดพลาดที่ง่ายมากและพิสูจน์ว่าฉันได้รับรหัสกลับหัวกลับหางแม้ใช้ไวยากรณ์พื้นฐานมากในปี 2014:

CREATE TABLE dbo.foo(id INT UNIQUE);

ป้อนคำอธิบายรูปภาพที่นี่ คลิกเพื่อดูภาพขยาย

ตอนนี้คุณสามารถรับไอคอนที่แตกต่างได้หากคุณสร้างดัชนีที่ไม่ซ้ำกันอย่างชัดเจน (และความแตกต่างเพียงอย่างเดียวที่คุณเห็นsys.indexesคือชื่อและค่าis_unique_constraint):

ป้อนคำอธิบายรูปภาพที่นี่ คลิกเพื่อดูภาพขยาย

สำหรับความแตกต่างอื่น ๆ ให้ดูที่สแต็คโอเวอร์โฟลว์คำตอบนี้


1
มันเฉพาะกับ SQL2005 หรือไม่? เพราะเมื่อฉันพยายามเพิ่มดัชนี UNIQUE ฉันจะได้รับไอคอนที่แตกต่างกัน และเมื่อฉันเพิ่มข้อ จำกัด ฉันจะได้รับไอคอนรูปสี่เหลี่ยมจัตุรัส ฉันไม่สามารถสร้างไอคอนนี้ซ้ำได้
ฟิลิปป์

@Phippippe คำตอบล่าสุด
Aaron Bertrand

ขอบคุณ นั่นเป็นคำอธิบายที่ไม่ต้องเสียเงินและคำตอบที่รวดเร็ว! :-)
ฟิลิปป์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.