Live and Let Die

09/11/2015

תגיות:
תגובה אחת

נא להתעדכן: DIE = Delete If Exists. סינטקס חדש ב-CTP 3.0 של SQL 2016 שצפוי לצאת בשנה הבאה בגרסה מסחרית,
וכותרת הפוסט היא מחווה לסרט בסדרת ג’יימס בונד מאמצע שנות השיבעים, ולשיר של פול מקרטני ולהקת כנפיים שליווה אותו (אז היה מקובל לתרגם את שמות הלהקות לעברית).

--Create Table MyTbl(ID Int);

Drop Table If Exists MyTbl;

כך נראה הסינטקס החדש לטובת כל אלו שמסתבכים (כמוני) עם פקודות מותנות Drop לאובייקטים: כל אובייקט יש לחפש בטבלת מערכת אחרת, והבלגן חוגג. מעתה ואילך סינטקס פשוט וקל לשינון (ראשי תיבות DIE, כבר אמרנו?) שמטפל ברוב סוגי האובייקטים:

AGGREGATE
ASSEMBLY
Column
Constraint
DATABASE
DEFAULT
FUNCTION
INDEX
Primary Key
PROCEDURE
ROLE
RULE
SCHEMA
SECURITY POLICY
SEQUENCE
SYNONYM
TABLE
TRIGGER
TYPE
USER
VIEW

כפי שניתן לראות, ניתן להיעזר בה גם בביצוע Drop לאובייקטים פנימיים בטבלה, למשל:

Drop Table If Exists MyTbl;

Create Table MyTbl(ID Int Constraint PK_MyTbl Primary Key Clustered, 

                Txt Varchar(10) Constraint Df_MyTbl_Txt Default 'zz');

 

Alter Table MyTbl Drop Constraint If Exists Df_MyTbl_Txt;

Alter Table MyTbl Drop Column If Exists Txt;

Alter Table MyTbl Drop Constraint If Exists PK_MyTbl;

יצרנו טבלה עם שתי עמודות – לאחת Primary Key ולשניה Default;
ביטלנו את ה-Primary Key ואת ה-Default,
וגם את העמודה השנייה.
צריך לדעת את שם ה-Constraint וזה קצת מקהה את העוקץ.

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

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

תגובה אחת

  1. sharonrimer13/11/2015 ב 17:06

    נחמד לדעת 🙂

    הגב