SqlHints.com

mange ganger kommer vi over et scenario der vi må utføre noen kode basert på Om Et Bord eksisterer eller ikke. Det er forskjellige måter å identifisere Tabellen eksistens I Sql Server, i denne artikkelen vil liste ut de ulike tilnærminger som brukes ofte, og det er fordeler og ulemper. JEG foretrekker Å bruke OBJECT_ID () – funksjonen som det er lett å huske. Gi meg beskjed om hvilken tilnærming du bruker og grunnen til det samme.

for å demo disse forskjellige tilnærmingene, la oss lage en eksempeldatabase med et bord ved skriptet nedenfor:

CREATE DATABASE SqlHintsDemoDBGOUSE SqlHintsDemoDBGOCREATE TABLE dbo.Customers (CustId INT, Name NVARCHAR(50))

hvordan sjekke Om Temp-tabellen finnes i Sql Server?

Tilnærming 1: Bruke INFORMATION_SCHEMA.TABELLER vis

vi kan skrive en spørring som nedenfor for å sjekke om Det finnes En Kundetabell i gjeldende database.

IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'Customers')BEGIN PRINT 'Table Exists'END

RESULTAT:
Sjekk Tabelleksistens VED HJELP AV INFORMATION_SCHEMA view

spørringen ovenfor kontrollerer Eksistensen Av Kundetabellen på tvers av alle skjemaene i gjeldende database. I stedet for dette hvis Du vil sjekke Eksistensen Av Tabellen i et spesifisert Skjema og Den Angitte Databasen, kan vi skrive ovennevnte spørring som nedenfor:

IF EXISTS (SELECT * FROM SqlHintsDemoDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = N'dbo' AND TABLE_NAME = N'Customers')BEGIN PRINT 'Table Exists'END

RESULTAT:
Sjekk Tabelleksistens Ved HJELP AV INFORMATION_SCHEMA.Tabeller view1

pros av Denne Tilnærmingen: INFORMATION_SCHEMA visninger er bærbare på tvers av ULIKE RDBMS systemer, så porting til ulike RDBMS krever ingen endring.

hvordan sjekke om En Lagret Prosedyre finnes I Sql Server

Tilnærming 2: Bruke OBJECT_ID () funksjon

VI kan bruke OBJECT_ID () funksjon som nedenfor for å sjekke om En Kunder Tabellen finnes i gjeldende database.

IF OBJECT_ID(N'dbo.Customers', N'U') IS NOT NULLBEGIN PRINT 'Table Exists'END

RESULTAT:
Sjekk Tabell Eksistens Ved HJELP AV OBJECT_ID () Funksjon

Angi Databasenavn og Skjema Navn deler For Tabellnavnet er valgfritt. Men å angi Databasenavn og Skjemanavn gir et alternativ for å kontrollere eksistensen av tabellen i den angitte databasen og i et angitt skjema, i stedet for å sjekke inn den gjeldende databasen på tvers av alle skjemaene. Spørringen nedenfor viser at selv om gjeldende database ER HOVEDDATABASE, kan vi kontrollere Eksistensen Av Kunder-tabellen i dbo-skjemaet I sqlhintsdemodb-databasen.

USE MASTERGOIF OBJECT_ID(N'SqlHintsDemoDB.dbo.Customers', N'U') IS NOT NULLBEGIN PRINT 'Table Exists'END

RESULTAT:
Sjekk Tabell Eksistens Ved HJELP AV OBJECT_ID() Funksjon1

Pros: Lett å huske. ET annet bemerkelsesverdig poeng å nevne OM OBJECT_ID () – funksjonen er: det gir et alternativ for å sjekke eksistensen Av Den Midlertidige Tabellen som er opprettet i gjeldende tilkoblingssammenheng. Alle Andre Tilnærminger kontrollerer eksistensen Av Den Midlertidige Tabellen som er opprettet på tvers av alle tilkoblingskonteksten i stedet for bare gjeldende tilkoblingskontekst. Under spørringen viser hvordan du kontrollerer eksistensen Av En Midlertidig Tabell VED HJELP AV OBJECT_ID () funksjon:

CREATE TABLE #TempTable(ID INT)GOIF OBJECT_ID(N'TempDB.dbo.#TempTable', N'U') IS NOT NULLBEGIN PRINT 'Table Exists'ENDGO

RESULTAT:
Sjekk Midlertidig Tabell Eksistens VED HJELP AV OBJECT_ID() Funksjon1

hvordan sjekke om Det finnes En Database i Sql Server

Tilnærming 3: Bruke sys.Objekter Katalogvisning

Vi kan bruke Sys.Objekter katalogvisning for å sjekke Eksistensen Av Tabellen som vist nedenfor:

IF EXISTS(SELECT 1 FROM sys.Objects WHERE Object_id = OBJECT_ID(N'dbo.Customers') AND Type = N'U')BEGIN PRINT 'Table Exists'END

RESULTAT
Sjekk Tabell Eksistens Ved Hjelp Av Sys.Objektvisning

slik kontrollerer du om det finnes en post i en tabell

Tilnærming 4: Bruke sys.Tabeller Katalogvisning

Vi kan bruke Sys.Tabeller katalogvisning for å sjekke Eksistensen Av Tabellen som vist nedenfor:

IF EXISTS(SELECT 1 FROM sys.Tables WHERE Name = N'Customers' AND Type = N'U')BEGIN PRINT 'Table Exists'END

RESULTAT
Sjekk Tabell Eksistens Ved Hjelp Av Sys.Tabeller Katalogvisning

Sys.Tabeller katalogvisning arver radene fra Sys.Objekter katalogvisning, Sys.objekter katalogvisning er referert til som basisvisning der som sys.Tabeller kalles avledet visning. Sys.Tabeller vil returnere radene bare For Tabellobjektene mens Sys.Objektvisning bortsett fra å returnere radene for tabellobjekter, returnerer den rader for objektene som: lagret prosedyre, visninger etc.

slik kontrollerer du om DET finnes EN VISNING i Sql Server

Tilnærming 5: Unngå å Bruke sys.sysobjects Systemtabell

vi bør unngå å bruke sys.sysobjects Systemtabell direkte, direkte tilgang til den vil bli avskrevet i noen fremtidige versjoner Av Sql Server. I Henhold Til Microsoft BOL link, Foreslår Microsoft å bruke katalogvisningene sys.objekter / sys.tabeller i stedet for sys.sysobjects systemtabell direkte.

IF EXISTS(SELECT name FROM sys.sysobjects WHERE Name = N'Customers' AND xtype = N'U')BEGIN PRINT 'Table Exists'END

RESULTAT:
Sjekk Tabell Eksistens Ved Hjelp Av Sys.sysobjects Systemtabell

:
hvordan sjekke Om En Database eksisterer
hvordan sjekke Om En Lagret Prosedyre eksisterer i Sql Server
hvordan sjekke om En Visning eksisterer
hvordan sjekke Om Temp-tabellen eksisterer
Hvordan sjekke om en post eksisterer i tabell

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *