SQL -server hvis du eksisterer drop -tabell

SQL -server hvis du eksisterer drop -tabell

Som du sikkert allerede vet, kan du ikke opprette en tabell i en database hvis det finnes en tabell med lignende navn i databasen. For å overvinne dette, kan du sjekke om tabellen hvis eksisterer, og hvis det er sant, slipp tabellen og opprette en ny tabell.

I denne artikkelen lærer du hvordan du bruker SQL betingede operasjoner. Vi vil diskutere hvordan du kan sjekke om en tabell eksisterer, og hvis sant, slipper den.

Krav

Vi har testet og implementert eksemplene i en SQL Server -forekomst i denne guiden. Hvis du vil reprodusere et lignende miljø, må du forsikre deg om at du har:

  1. Microsoft SQL Server 2019
  2. SQL Server Management Studio 18
  3. Endre tillatelser på måldatabasen din

Når du har de spesifiserte kravene ovenfor, kan vi fortsette med opplæringen.

Grunnleggende

Før vi får lære å legge til betinget logikk før du slipper et bord, la oss se hva som skjer når du prøver å slippe en ikke-eksisterende tabell i en database.

Tenk på eksemplet på spørringen nedenfor:

Bruk SalesDB;
Drop Table Does_not_exist;

Hvis vi prøver å utføre spørringen ovenfor, vil SQL Server returnere en MSG 3701 -feil:

Tilstandslogikk - Metode 1

Den første metoden du kan bruke når du trenger å slette en tabell hvis den eksisterer er slippet hvis det eksisterer spørring. Denne spørringen er bare tilgjengelig i SQL Server -versjonen 2016 og høyere.

Syntaksen er som:

Slippbord [hvis eksisterer] db_name.skjema_navn.tbl_name;

Spørringen vil sjekke om tabellen eksisterer og, hvis sant, slipper den; Ellers kan du ignorere drop -setningen.

For eksempel:

Bruk SalesDB;
Slippbord hvis de eksisterer ansatte;

Hvis bordet eksisterer, vil SQL forsøke å slippe det.

Husk at SQL -regler for å slippe en tabell fortsatt gjelder, selv når du bruker slippet hvis det eksisterer spørring.

Metode 2 - Objekt -ID

Den andre metoden er å bruke Object_id () -funksjonen. Funksjonen returnerer en objekt -ID hvis det spesifiserte navnet eksisterer.

Eksempelkoden nedenfor viser deg hvordan du bruker objekt_id () -funksjonen for å legge til betinget logikk når du sletter en tabell.

Bruk SalesDB;
Hvis objekt_id (n'dbo.Ansatte, n'u ') er ikke null
Drop Table [DBO].Ansatte;

Du kan lære mer om Object_id () -funksjonen i ressursen nedenfor:

SQL Server Object_id () Funksjonsdokumenter.

Metode 3 - Informasjonsskjema

Vi kan også bruke informasjonsskjemaet for SQL Server til å spørre om en tabell eksisterer. Et eksempel på spørring er som vist nedenfor:

Bruk SalesDB;
Hvis eksisterer (
Velg * fra informasjon_schema.Tabeller der tabell_name = 'ansatte' og tabell_schema = 'dbo')
Drop Table [DBO].[Ansatte];

I eksemplet over bruker vi informasjonsskjemaet for å sjekke om en spesifisert tabell eksisterer.

Lukking

Ved hjelp av denne guiden oppdaget du forskjellige måter å legge til betinget logikk når du droppet en tabell i SQL Server. Å legge til betingede uttalelser lar deg forhindre feil i automatiserte SQL -skript.