Kā SQL Server izmantot DROP IF EXISIT?



Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai

Šajā rakstā ir apskatīta “PILES, JA BŪS” paziņojums, kas pieejams SQL Server 2016 un jaunākās versijās. “JA IZEJAS” ir jaunākā izvēles klauzula, kas pievienota esošajā DROP priekšrakstā SQL Server 2016 un jaunākās versijās. Būtībā “PILES, JA BŪS” opcija tiek izmantota, ja jāpārbauda, ​​vai entītija paliek datu bāzē, pirms tā tiek izveidota vai nomesta. Šajā gadījumā mēs vispirms nometīsim esošo datu bāzes objektu un pēc tam, ja nepieciešams, atjaunosim to ar izmaiņām.



Tādējādi tas novērš veco rakstīšanas veidu, ja nosacījums, un iekšā nosacījumu, ja raksta paziņojumu, lai pārbaudītu objekta klātbūtni, lai to nomestu. Ja tas nenotiek, nākamais sērijas paziņojums tiks izpildīts arī turpmāk. Bet, ja mēs mēģinām nomest objektu, kas neeksistē, tas parādīs kļūdas ziņojumu, kā parādīts zemāk.



Izpildiet šo vaicājumu.



nomest galdu dbo.uzņēmums

Rezultāts būs šāds.

Kļūda rodas, nometot datubāzes objektu, kas neeksistē

Sintakse

“DROP object_type [IF EXISTS] objekta_nosaukums”

Argumenti

OBJECT_TYPE:



Objekta tips var būt jebkurš no datu bāzes, trigera, montāžas, secības, rādītāja, tabulas, procedūru skata, funkcijas utt.

JA PASTĀV:

Tas ir izvēles klauzula, un, ja tas ir minēts DROP paziņojumā, tas pārbaudīs objekta esamību, ja tāds pastāv, tas nokritīs, pretējā gadījumā tas turpinās izpildīt nākamo paziņojumu blokā, neradot nekādas kļūdas.

Tagad, ieviešot jauno metodi “DROP IF EXISTS” SQL Server 2016 izstrādātāji var rakstīt īsu kodu.

Vispirms izveidojiet datu bāzi ar nosaukumu “appuals”.

Datu bāzes izveide

Tagad mēs izveidosim tabulu, kuru nomest, izpildot šādu kodu.

izmantot [appuals] Go CREATE TABLE temp (id INT, nosaukums varchar (100)); IET

Rezultāts būs šāds.

Galda izveide

Pēc tam izveidojiet veikala procedūru, kas tiks atmesta, izmantojot šo kodu.

IZMANTOJIET [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Izveidojiet PROCEDŪRU [dbo]. [Sp_temp] AS BEGIN SET NOCOUNT ON; SELECT * no dbo.temp; BEIGT

Rezultāts būs šāds.

Veikala procedūras izveide

Vecā metode: Pirms SQL Server izmanto drop, ja iziet no datu bāzes objektiem

Izmantojot metodi DROP IF EXISTS, pirms SQL Server 2016 bija nepieciešams rakstīt garu IF priekšrakstu ietinēju kodu.

Pilināmā tabula, ja tāda pastāv

Iepriekšējā tabulas nomešanas metode ir šāda.

Ja mēs izmantojam SQL Server 2015 vai agrāk, nekā mums jāizpilda šāda koda kopa.

Ja (OBJECT_ID ('dbo.temp') nav Null) Drop Table temp

Rezultāts būs šāds.

Nometot galdu

Tagad tā sintakse ir diezgan mulsinoša, tāpēc, ja jums tas nepatīk un jūs izmantojat SQL Server 2016 vai jaunāku versiju, lielo iesaiņotāju vietā varat izmantot vienkāršu paziņojumu DROP IF EXIST.

Drop Store procedūra, ja tāda pastāv:

Lai atceltu procedūru, mums ir jāuzraksta nosacījuma paziņojums, lai pārbaudītu, vai veikala procedūra pastāv, vai nē, tad uzrakstiet paziņojumu par kritienu. Pretējā gadījumā tas radīs kļūdu, ja saglabātā procedūra neeksistē.

Tagad izpildiet šādus apgalvojumus, lai nomestu procedūru versijās, kas ir zemākas par SQL Server 2016.

Ja eksistē (atlasiet 1 no sys.procedures WHERE nosaukums = 'sp_temp') PILINĀŠANAS PROCEDŪRA dbo.sp_temp

Rezultāts būs šāds.

Atbrīvošanās procedūra, izmantojot veco metodi if iesaiņojuma kods

Nometiet datu bāzi, ja tāda ir:

Ja izmantojat iepriekšējās SQL Server versijas, lai nomestu datu bāzi, jāizpilda šāds kods.

JA DB_ID ('appuals') NEBŪT SĀKT DROP DATU BĀZES lietojumprogrammas BEIGAS

Rezultāts būs šāds.

Nometiet datu bāzi, izmantojot veco metodi

Jauna metode: DROP IF EXISTS tiek atbalstīts SQL Server 2016 un jaunākās versijās

Lai nomestu datu bāzes objektu SQL Server 2016 un jaunākās versijās, mums jāizpilda vienkāršs paziņojums.

Nolaižamā tabula, ja tāda ir:

Mēs varam uzrakstīt paziņojumu, kā norādīts tālāk SQL Server 2016, lai noņemtu saglabātu tabulu, ja tāda pastāv.

NOLIET TABULU, JA PASTĀV dbo.temp

Rezultāts būs šāds.

Nometiet tabulu, izmantojot jauno metodi

Pilināšanas procedūra, ja tāda ir:

Tagad mēs atmetīsim saglabāto procedūru, kuru izveidojām raksta sākumā, izpildot šādu kodu.

PILNOŠANAS PROCEDŪRA, JA PASTĀV dbo.sp_temp

Rezultāts būs šāds.

Nometiet tabulu, izmantojot jauno metodi

Kas attiecas uz sintaksi, šo vienkāršo paziņojumu ir viegli saprast un viegli atcerēties. Līdzīgi mēs varam ievērot to pašu procedūru, lai nomestu citus datu bāzes objektus.

Nometiet datu bāzi, ja tāda ir:

Izpildiet šo kodu, ja vēlaties nomest datu bāzi, izmantojot pārbaudi, ja tāda ir

LIETOJIET MASTER GO DROP DATABASE, JA PASTĀV

Rezultāts būs šāds.

Nometiet datu bāzi, izmantojot jauno metodi

Šīs metodes izmantošanas priekšrocība ir tāda, ka, ja datu bāzes nav, tā neradīs nekādas kļūdas, nākamais sērijas paziņojums tiks izpildīts arī turpmāk. Mēģināsim nomest jau nomesto datubāzi.

Kļūda rodas, atkārtoti nometot jau nomesto datu bāzi.

Līdzīgi mēs no datu bāzes varam nomest indeksus, skatus, secības, asamblejas utt.

3 minūtes lasīts