Как да използвам DROP АКО СЪЩЕСТВУВА в SQL Server?



Опитайте Нашия Инструмент За Премахване На Проблемите

Тази статия обсъжда „КАПАНЕ, АКО СЪЩЕСТВУВА“ на разположение в SQL Server 2016 и по-нови версии. „АКО ИЗХОДИ“ е най-новата незадължителна клауза, добавена в съществуващия DROP израз в SQL Server 2016 и по-нови версии. По същество „КАПАНЕ, АКО СЪЩЕСТВУВА“ опция се използва, когато е необходимо да се провери дали обектът остава в базата данни, преди да бъде създаден или отпаднал. В този случай първо ще изпуснем съществуващия обект на базата данни и след това ще го пресъздадем с промени, ако е необходимо.



По този начин той предотвратява стария начин на писане if условие и вътре в условието if пише изявление, за да тества присъствието на обекта, за да го пусне. Ако не се случи, следващият оператор в партидата ще продължи да се изпълнява. Но ако се опитаме да пуснем обект, който не съществува, той ще изведе съобщение за грешка, както е показано по-долу.



Изпълнете следната заявка.



падаща таблица dbo.company

Резултатът ще бъде такъв.

Грешката възниква при отпадане на обекта на базата данни, който не съществува

Синтаксис

“DROP object_type [IF EXISTS] object_name”

Аргументи

OBJECT_TYPE:



Типът обект може да бъде всеки от базата данни, задействане, монтаж, последователност, индекс, таблица, изглед на процедура, функция и т.н.

АКО СЪЩЕСТВУВА:

Това е незадължителна клауза и ако тя е спомената в израза 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] КАТО НАЧАЛО ЗАДАВЕТЕ НОКУНТ ВКЛЮЧЕН; ИЗБЕРЕТЕ * от dbo.temp; КРАЙ

Резултатът ще бъде както по-долу.

Създаване на процедура за съхранение

Стар метод: Преди SQL Server, използвайки drop при излизане от обекти на база данни

Използването на метода DROP IF EXISTS преди SQL Server 2016 изискваше писане на дълъг код на обвивки на изрази IF.

Пуснете таблица, ако съществува

Предишният метод за пускане на маса е както следва.

Ако използваме SQL Server 2015 или по-рано, трябва да изпълним следния куп код.

Ако (OBJECT_ID ('dbo.temp') не е нула) Изпуснете temp на таблицата

Резултатът ще бъде както следва.

Отпадане на масата

Сега синтаксисът му е доста объркващ, така че ако не ви харесва и използвате SQL Server 2016 или по-нова версия, можете да отидете на прост оператор DROP IF EXIST вместо големи обвивки.

Отхвърлете процедурата за съхранение, ако съществува:

За да откажем процедурата, трябва да напишем условен оператор, за да проверим дали процедурата за съхранение съществува или не, след което да напишем оператора за отпадане. В противен случай това ще доведе до грешка, в случай че съхранената процедура не съществува.

Сега изпълнете следните изрази, за да откажете процедурата във версии, по-ниски от SQL Server 2016.

АКО СЪЩЕСТВУВА (ИЗБЕРЕТЕ 1 ОТ sys.procedures WHERE Name = 'sp_temp') ПРОЦЕДУРА ЗА ПАДАНЕ dbo.sp_temp

Резултатът ще бъде такъв.

Отхвърлете процедурата, като използвате стария метод на кода на обвивката if

Пуснете базата данни, ако съществува:

Ако използвате предишни версии на SQL Server, трябва да изпълните следния код, за да пуснете базата данни.

АКО DB_ID ('appuals') НЕ Е НУЛНО НАЧАЛО НАПАДАНЕ НА БАЗАТА ДАННИ appuals END

Резултатът ще бъде както следва.

Пуснете базата данни, като използвате стар метод

Нов метод: DROP IF EXISTS се поддържа в SQL Server 2016 и по-нова версия

За да пуснем обект на база данни в SQL Server 2016 и по-нови, трябва да изпълним прост оператор.

Пуснете таблица, ако съществува:

Можем да напишем изявление, както е показано по-долу в SQL Server 2016, за да премахнем съхранена таблица, ако тя съществува.

ТАБЛИЦА ЗА ПАДАНЕ, АКО СЪЩЕСТВА dbo.temp

Резултатът ще бъде такъв.

Пуснете таблицата с помощта на новия метод

Процедура за отпадане, ако съществува:

Сега ще изпуснем съхранената процедура, която създадохме в началото на статията, като изпълним следния код.

ПРОЦЕДУРА ЗА КАПАНЕ, АКО СЪЩЕСТВА dbo.sp_temp

Резултатът ще бъде както по-долу.

Пуснете таблицата с помощта на новия метод

Що се отнася до синтаксиса, това просто изявление е лесно за разбиране и лесно за запомняне. По същия начин можем да следваме същата процедура, за да пуснем други обекти на базата данни.

Пуснете базата данни, ако съществува:

Изпълнете следния код, ако искате да изпуснете базата данни, като използвате проверка, ако съществува

ИЗПОЛЗВАЙТЕ MASTER GO DROP DATBASE, АКО СЪЩЕСТВУВА appuals

Резултатът ще бъде както по-долу.

Пуснете базата данни, като използвате новия метод

Ползата от използването на този метод е, че ако базата данни не съществува, тя няма да причини грешка, следващият оператор в партидата ще продължи да се изпълнява. Нека се опитаме да пуснем отново отпадналата база данни.

Грешката възниква при повторно пускане на вече изпуснатата база данни.

По същия начин можем да пуснем от базата данни индекси, изгледи, последователности, сглобки и т.н.

3 минути четене