יום חמישי, 9 בפברואר 2012

Double Check

Double Check


היום אני רוצה להסב את תשומת הלב לשימוש באילוץ CHECK 
לפעמים אנו משתמשים באילוצי CHECK רבים כדי לאכוף את נכונות הנתונים במערכת המידע.
אך לפעמים אנו יכולים לעשות טעות בסיסית שתגרום להרבה משערות ראשנו לנשור.


להלן דוגמא
USE tempdb
GO

CREATE TABLE DoubleCheck(col1 int)
GO

ALTER TABLE DoubleCheck
ADD CONSTRAINT CheckGraterThen5 CHECK(col1>5)
GO
ALTER TABLE DoubleCheck
ADD CONSTRAINT CheckLessThen5 CHECK(col1<5)
GO

בודגמא הזו אנו רואים שני אילוצים הסותרים אחד את השני, לא מתבצעת בדיקה שהאילוצים סותרים והמערכת לא מתריעה על כך.
במקרה הזו לא נוכל להכניס אף נתון לטבלה!
(חוץ מ NULL כמובן)

השתמשו באילוצים בחוכמה, ואם אתם מבצעים טעינה מסיבית כדאי מאוד לכבות את האילוץ לפני ביצוע הטעינה.
לדוגמא
ALTER TABLE {TableName} NOCHECK CONSTRAINT {ConstraintName}

יוחנן 

אין תגובות:

הוסף רשומת תגובה