מדריך למגבלות ייחודיות בשרת SQL של ​​Microsoft

על ידי יצירת UNIQUE אילוץ, מנהלי SQL Server מציינים כי עמודת מסד נתונים עשויה לא להכיל ערכים כפולים. כשאתה יוצר UNIQUE חדש אילוץ, SQL Server בודק את העמודה המדוברת כדי לקבוע אם היא מכילה ערכים כפולים כלשהם. אם ה שולחן מכיל כפילויות, פקודת יצירת האילוץ נכשלת. באופן דומה, לאחר שתגדיר אילוץ UNIQUE בעמודה, ניסיונות להוסיף או לשנות נתונים שיגרמו להתקיים כפילויות נכשלים גם הם.

קוד SQL על רקע שחור.
KIVILCIM PINAR / Getty Images

מדוע להשתמש במגבלות ייחודיות

אילוץ ייחודי ומפתח עיקרי שניהם אוכפים ייחודיות, אך יש פעמים שאילוץ UNIQUE הוא הבחירה הטובה יותר.

  • השתמש באילוץ UNIQUE כדי לציין מספר אילוצים לטבלה. אתה יכול רק לצרף מפתח ראשי אחד לטבלה.
  • השתמש באילוץ UNIQUE כאשר עמודה מאפשרת ערכי null. ניתן לצרף אילוצי מפתח ראשוניים רק לעמודות שאינן מאפשרות ערכי null.

יצירת אילוץ ייחודי

הדרך הקלה ביותר ליצור אילוץ ייחודי ב- Transact-SQL היא להתחבר למנוע מסד נתונים בסייר האובייקטים ב- SQL Management Studio ואז לחץ שאילתה חדשה.

השתמש בשאילתה הבאה, שנה את המונחים לפי הצורך, כדי ליצור טבלה חדשה והוסף אילוץ בעמודה:

USE AdventureWorks2012; 
instagram viewer

ללכת
צור שולחן ייצור. TransactionHistoryArchive4
(
TransactionID int לא NULL,
CONSTRAINT AK_TransactionID UNIQUE (TransactionID)
);
ללכת.

בצע את השאילתה.

באופן דומה, כדי ליצור אילוץ ייחודי לטבלה קיימת, בצע את שאילתת T-SQL הבאה:

USE AdventureWorks2012; 
ללכת
אדם משנה שולחן. סיסמה
הוסף CONSTRAINT AK_Password UNIQUE (PasswordHash, PasswordSalt);
ללכת.

אילוצים ייחודיים לעומת אינדקסים ייחודיים

היה קצת בלבול לגבי ההבדל בין אילוץ UNIQUE לאינדקס UNIQUE. אמנם אתה יכול להשתמש בפקודות T-SQL שונות כדי ליצור אותן (ALTER TABLE ו- ADD CONSTRAINT לאילוצים וליצור מדד ייחודי לאינדקסים), אך לרוב יש להם אותה השפעה. למעשה, כשאתה יוצר אילוץ UNIQUE, זה יוצר למעשה אינדקס UNIQUE על השולחן. שים לב למספר הבדלים, עם זאת:

  • כשיוצרים אינדקס, תוכלו להוסיף אפשרויות נוספות לפקודת היצירה.
  • עמודה הכפופה לאילוץ UNIQUE עשויה לשמש כ- מפתח זר.