تتناول هذه المقالة 'DROP IF EXISTS' بيان متوفر في SQL Server 2016 والإصدارات الأحدث. 'في حالة الخروج' هي أحدث جملة اختيارية تمت إضافتها في عبارة DROP الموجودة في SQL Server 2016 والإصدارات الأحدث. في الأساس ، فإن 'DROP IF EXISTS' يتم استخدام الخيار عندما يكون من الضروري التحقق مما إذا كان الكيان يظل في قاعدة البيانات قبل إنشائه أو إسقاطه. في هذه الحالة ، سنقوم أولاً بإسقاط كائن قاعدة البيانات الحالي ثم إعادة إنشائه بالتغييرات إذا لزم الأمر.
وبالتالي ، فإنه يمنع الطريقة القديمة في كتابة شرط if وداخل شرط if كتابة بيان لاختبار وجود الكائن لإسقاطه. إذا لم يحدث ذلك ، فسيستمر تنفيذ العبارة التالية في الدُفعة. ولكن إذا حاولنا إسقاط كائن غير موجود ، فسيظهر رسالة خطأ كما هو موضح أدناه.
قم بتنفيذ الاستعلام التالي.
إسقاط الجدول dbo.company
سيكون الإخراج مثل هذا.
يظهر الخطأ أثناء إسقاط كائن قاعدة البيانات غير موجود
بناء الجملة
'DROP object_type [IF EXISTS] object_name'
الحجج
نوع الكائن:
يمكن أن يكون نوع الكائن أي شخص من قاعدة البيانات ، المشغل ، التجميع ، التسلسل ، الفهرس ، الجدول ، عرض الإجراء ، الوظيفة ، إلخ.
إذا كان موجودًا:
إنها عبارة اختيارية وإذا تم ذكرها في بيان DROP ، فسوف يتحقق من وجود الكائن ، وإذا كان موجودًا فسيتم إسقاطه ، وإلا فإنه سيستمر في تنفيذ العبارة التالية في الكتلة دون حدوث أي أخطاء.
الآن مع إدخال الطريقة الجديدة 'DROP IF EXISTS' في SQL Server 2016 ، يمكن للمطورين كتابة تعليمات برمجية مختصرة.
أولاً ، قم بإنشاء قاعدة بيانات باسم 'appuals'.
إنشاء قاعدة بيانات
الآن ، سنقوم بإنشاء جدول ليتم إسقاطه عن طريق تنفيذ الكود التالي.
استخدم [appuals] Go CREATE TABLE temp (id INT، name varchar (100))؛ اذهب
سيكون الإخراج على النحو التالي.
إنشاء الجدول
علاوة على ذلك ، قم بإنشاء إجراء مخزن ليتم إسقاطه باستخدام الكود التالي.
استخدم [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO قم بإنشاء إجراء [dbo]. [sp_temp] AS BEGIN SET NOCOUNT ON ؛ حدد * من dbo.temp ؛ النهاية
سيكون الإخراج على النحو التالي.
إنشاء إجراءات المتجر
الطريقة القديمة: قبل SQL Server باستخدام drop if الخروج على كائنات قاعدة البيانات
يتطلب استخدام أسلوب DROP IF EXISTS قبل SQL Server 2016 كتابة تعليمات برمجية لغلاف جملة IF طويلة.
أسقط الجدول إن وجد
الطريقة السابقة لإسقاط الجدول هي كما يلي.
إذا كنا نستخدم SQL Server 2015 أو أقدم مما نحتاجه لتنفيذ مجموعة التعليمات البرمجية التالية.
إذا كان (OBJECT_ID ('dbo.temp') ليس فارغًا) إسقاط جدول مؤقت
سيكون الإخراج على النحو التالي.
اسقاط الطاولة
الآن بناء الجملة محير للغاية ، لذا إذا لم تعجبك وكنت تستخدم SQL Server 2016 أو إصدارًا أحدث ، فيمكنك البحث عن عبارة DROP IF EXIST بسيطة بدلاً من الأغلفة الكبيرة.
إجراء مخزن الإسقاط إن وجد:
لإسقاط الإجراء ، يتعين علينا كتابة بيان شرطي للتحقق مما إذا كان إجراء المتجر موجودًا أم لا ، ثم كتابة بيان الإفلات. وإلا ، فسيتم عرض خطأ في حالة عدم وجود الإجراء المخزن.
الآن قم بتنفيذ العبارات التالية لإسقاط الإجراء في إصدارات أقل من SQL Server 2016.
إذا كان EXISTS (حدد 1 من sys.procedures حيث الاسم = 'sp_temp') إجراء الإسقاط dbo.sp_temp
سيكون الإخراج مثل هذا.
إجراء الإسقاط باستخدام الطريقة القديمة في كود الغلاف إذا
إفلات قاعدة البيانات إن وجدت:
إذا كنت تستخدم إصدارات سابقة من SQL Server ، فأنت بحاجة إلى تنفيذ التعليمات البرمجية التالية لإسقاط قاعدة البيانات.
إذا لم يكن DB_ID ('التطبيقات') فارغًا ، ابدأ إسقاط تطبيقات قاعدة البيانات في النهاية
سيكون الإخراج على النحو التالي.
قم بإسقاط قاعدة البيانات باستخدام طريقة قديمة
طريقة جديدة: DROP IF EXISTS مدعوم في SQL Server 2016 والإصدار الأعلى
لإسقاط كائن قاعدة بيانات في SQL Server 2016 وما فوق ، نحتاج إلى تنفيذ عبارة بسيطة.
إسقاط الجدول إن وجد:
يمكننا كتابة بيان على النحو التالي في SQL Server 2016 لإزالة الجدول المخزن إذا كان موجودًا.
إسقاط الجدول إذا كان EXISTS dbo.temp
سيكون الإخراج مثل هذا.
قم بإسقاط الجدول باستخدام الطريقة الجديدة
إجراء الإسقاط إن وجد:
سنقوم الآن بإسقاط الإجراء المخزن الذي أنشأناه في بداية المقالة عن طريق تنفيذ الكود التالي.
إجراء السقوط إذا كان موجودًا dbo.sp_temp
سيكون الإخراج على النحو التالي.
قم بإسقاط الجدول باستخدام الطريقة الجديدة
بقدر ما يتعلق الأمر بالصياغة ، فإن هذه العبارة البسيطة سهلة الفهم والتذكر. وبالمثل ، يمكننا اتباع نفس الإجراء لإسقاط كائنات قاعدة البيانات الأخرى.
إفلات قاعدة البيانات إن وجدت:
قم بتنفيذ التعليمات البرمجية التالية إذا كنت تريد إسقاط قاعدة البيانات باستخدام التحقق من وجودها
استخدم MASTER GO DROP DATABASE إذا كان EXISTS مناسبًا
سيكون الإخراج على النحو التالي.
قم بإسقاط قاعدة البيانات باستخدام الطريقة الجديدة
وتتمثل فائدة استخدام هذه الطريقة في أنه في حالة عدم وجود قاعدة البيانات فلن تتسبب في أي خطأ ، فسيستمر تنفيذ العبارة التالية في الدفعة. دعونا نحاول إعادة إفلات قاعدة البيانات التي تم إسقاطها بالفعل.
يظهر الخطأ أثناء إعادة إسقاط قاعدة البيانات التي تم إسقاطها بالفعل.
وبالمثل ، يمكننا إسقاط الفهارس والعروض والتسلسلات والتجميعات وما إلى ذلك من قاعدة البيانات.
3 دقائق للقراءة