כיצד להשתמש ב- DROP אם קיים ב- SQL Server?



נסה את הכלי שלנו לביטול בעיות

מאמר זה דן ב 'זרוק אם קיים' הצהרה זמינה ב- SQL Server 2016 ובגירסאות מאוחרות יותר. 'אם יוצא' הוא הסעיף האופציונלי האחרון שנוסף בהצהרת DROP הקיימת ב- SQL Server 2016 ובגירסאות מאוחרות יותר. בעיקרו של דבר, ה 'זרוק אם קיים' אפשרות זו משמשת כאשר יש צורך לבדוק אם ישות נשארת במסד נתונים לפני שהיא נוצרת או נשמטת. במקרה זה, תחילה נשמיט את אובייקט מסד הנתונים הקיים ואז נוצר אותו מחדש עם שינויים במידת הצורך.



לפיכך, זה מונע את דרך הכתיבה הישנה אם התנאי ובתוך אם התנאי כותב הצהרה כדי לבדוק את נוכחות האובייקט כדי להפיל אותו. אם זה לא קורה, ההצהרה הבאה באצווה תמשיך להתבצע. אך אם ננסה להפיל אובייקט שאינו קיים אז הוא יעלה הודעת שגיאה כמוצג להלן.



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



ירידה לטבלה dbo.company

התפוקה תהיה כזו.

השגיאה מתעוררת בעת השמטת אובייקט מסד הנתונים שאינו קיים

תחביר

'DROP object_type [IF EXISTS] object_name'

ויכוחים

OBJECT_TYPE:



סוג האובייקט יכול להיות כל אחד ממסד הנתונים, ההדק, ההרכבה, הרצף, האינדקס, הטבלה, תצוגת ההליך, הפונקציה וכו '.

אם קיים:

זהו סעיף אופציונלי ואם הוא מוזכר בהצהרת DROP, הוא יבדוק את קיומו של האובייקט, אם הוא קיים הוא יירד, אחרת הוא ימשיך לבצע את ההצהרה הבאה בבלוק מבלי לייצר שום שגיאה.

כעת עם הצגת השיטה החדשה 'DROP IF EXISTS' ב- SQL Server 2016 מפתחים יכולים לכתוב קוד קצר.

ראשית, צור מסד נתונים בשם 'appuals'.

יצירת מסד נתונים

כעת ניצור טבלה שתושמט על ידי ביצוע הקוד הבא.

השתמש ב [appuals] עבור ליצור טמפ 'טבלה (id INT, שם varchar (100)); ללכת

התפוקה תהיה כדלקמן.

יצירת שולחן

יתר על כן, צור נוהל חנות שיושמט באמצעות הקוד הבא.

השתמש [appuals] GO הגדר ANSI_NULLS ב- GO הגדר QUOTED_IDENTIFIER ב- GO צור נוהל [dbo]. [Sp_temp] כמו התחל להגדיר מספר חשבונות מופעל; בחר * מתוך dbo.temp; סוֹף

התפוקה תהיה כמו להלן.

יצירת נוהל חנות

שיטה ישנה: לפני שרת SQL באמצעות drop אם יציאה באובייקטים של מסד נתונים

שימוש בשיטת DROP IF EXISTS לפני SQL Server 2016 נדרש לכתוב קוד עטיפות IF ארוך.

שחרר טבלה אם קיים

השיטה הקודמת להפלת טבלה היא כדלקמן.

אם אנו משתמשים ב- SQL Server 2015 ואילך, עלינו לבצע את חבורה הקוד הבאה.

אם (OBJECT_ID ('dbo.temp') אינו אפס) טמפ 'טבלת ירידה

התפוקה תהיה כדלקמן.

נפילת השולחן

עכשיו התחביר שלו די מבלבל, כך שאם אתה לא אוהב את זה ואתה משתמש ב- SQL Server 2016 ומעלה, אתה יכול ללכת להצהרת DROP IF EXIST פשוטה במקום עטיפות גדולות.

נוהל חנות זרוק אם קיים:

כדי להוריד את ההליך, עלינו לכתוב הצהרה מותנית כדי לבדוק אם נוהל החנות קיים או לא ואז לכתוב את הצהרת הצניחה. אחרת, היא תעלה שגיאה במקרה שהנוהל המאוחסן לא קיים.

כעת בצע את ההצהרות הבאות כדי להוריד את ההליך בגירסאות נמוכות מ- SQL Server 2016.

אם קיים (בחר 1 מתוך sys.procedures WHERE שם = 'sp_temp') נוהל DROP dbo.sp_temp

התפוקה תהיה כזו.

הורד הליך באמצעות השיטה הישנה של קוד עטיפה

שחרר מסד נתונים אם קיים:

אם אתה משתמש בגירסאות קודמות של SQL Server, עליך לבצע את הקוד הבא כדי להוריד את מסד הנתונים.

אם DB_ID ('appuals') אינו NULL BEGIN DROP DATABASE appuals END

התפוקה תהיה כדלקמן.

שחרר את מסד הנתונים בשיטה ישנה

שיטה חדשה: DROP IF EXISTS נתמך בגרסת SQL Server 2016 ומעלה

כדי להפיל אובייקט מסד נתונים ב- SQL Server 2016 ומעלה עלינו לבצע הצהרה פשוטה.

שחרר טבלה אם קיים:

אנו יכולים לכתוב הצהרה כמפורט להלן ב- SQL Server 2016 כדי להסיר טבלה מאוחסנת אם היא קיימת.

טפטוף טבלה אם קיים dbo.temp

התפוקה תהיה כזו.

שחרר טבלה באמצעות השיטה החדשה

הליך טיפה אם קיים:

כעת נשמט את ההליך המאוחסן שיצרנו בתחילת המאמר על ידי ביצוע הקוד הבא.

הליך טיפוס אם קיים dbo.sp_temp

התפוקה תהיה כמו להלן.

שחרר טבלה באמצעות השיטה החדשה

מבחינת התחביר, אמירה פשוטה זו קלה להבנה וקלה לזכירה. באופן דומה, אנו יכולים לבצע את אותו ההליך כדי להפיל אובייקטים אחרים של מסדי נתונים.

שחרר מסד נתונים אם קיים:

בצע את הקוד הבא אם ברצונך להוריד מסד נתונים באמצעות הסימון אם קיים

השתמש ב- MASTER GO DROP DATABASE אם קיים אנשים

התפוקה תהיה כמו להלן.

שחרר את מסד הנתונים באמצעות השיטה החדשה

היתרון בשימוש בשיטה זו הוא שאם מסד הנתונים אינו קיים הוא לא יגרום לשגיאה, המשפט הבא באצווה ימשיך להתבצע. בואו ננסה להוריד מחדש את מסד הנתונים שכבר הושמט.

השגיאה מתעוררת בזמן שמירה מחדש של מסד הנתונים שכבר נפל.

באופן דומה, אנו יכולים להוריד אינדקסים, תצוגות, רצפים, מכלולים וכו 'ממסד הנתונים.

3 דקות קריאה