SqlHints.com

monta kertaa törmäämme skenaarioon, jossa meidän on suoritettava jokin koodi sen perusteella, onko taulukko olemassa vai ei. On olemassa erilaisia tapoja tunnistaa taulukon olemassaolon Sql Server, tässä artikkelissa luetellaan eri lähestymistapoja, joita käytetään yleisesti ja sen etuja ja haittoja. Käytän mieluummin OBJECT_ID () – toimintoa, koska se on helppo muistaa. Kerro minulle, mitä lähestymistapaa käytät ja miksi sama.

näiden eri lähestymistapojen demoksi luodaanpa esimerkkitietokanta, jossa on taulukko alla olevalla skriptillä:

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

Miten tarkistaa, onko Temp-taulukko olemassa Sql Server-palvelussa?

lähestymistapa 1: käyttäen INFORMATION_SCHEMAA.Taulukot view

voimme kirjoittaa kyselyn kuten alla tarkistaa, onko nykyisessä tietokannassa Asiakastaulukko.

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

tulos:
Check Table Existance Using INFORMATION_SCHEMA view

yllä oleva kysely tarkistaa Asiakastaulukon olemassaolon kaikissa nykyisen tietokannan skeemoissa. Sen sijaan, jos haluat tarkistaa taulukon olemassaolon tietyssä skeemassa ja määrätyssä tietokannassa, voimme kirjoittaa yllä olevan kyselyn alla:

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

tulos:
Tarkista taulukon Eksistanssi käyttäen INFORMATION_SCHEMAA.Taulukot view1

tämän lähestymistavan plussat: INFORMATION_SCHEMA-näkymät ovat kannettavia eri RDBMS-järjestelmissä, joten eri RDBMS-järjestelmiin siirtyminen ei vaadi muutoksia.

Miten tarkistaa, onko SQL Server

Approach 2: Using OBJECT_ID() function

we can use OBJECT_ID() function like below to check if a Customers Table in the current database.

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

tulos:
Check Table Existance Using OBJECT_ID() Function

Specifying the Database Name and Schema Name parts for the Table Name is optional. Mutta tietokannan nimen ja skeeman nimen määrittäminen tarjoaa mahdollisuuden tarkistaa taulukon olemassaolo määritetyssä tietokannassa ja tietyssä skeemassa sen sijaan, että se tarkistettaisiin nykyisessä tietokannassa kaikissa skeemoissa. Alla kysely osoittaa, että vaikka nykyinen tietokanta on MASTER database, voimme tarkistaa olemassaolo asiakkaiden taulukon DBO skeema sqlhintsdemodb tietokantaan.

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

tulos:
Check Table Existance Using OBJECT_ID() Function1

plussat: helppo muistaa. Yksi merkittävä seikka mainita OBJECT_ID () funktio on: se tarjoaa mahdollisuuden tarkistaa olemassa väliaikaisen taulukon, joka on luotu nykyisen yhteyden yhteydessä. Kaikki muut lähestymistavat tarkistavat väliaikaisen taulukon olemassaolon kaikissa yhteyksissä kontekstin sijaan vain nykyisen yhteyskontekstin. Alla oleva kysely näyttää kuinka tarkistaa väliaikaisen taulukon olemassaolo OBJECT_ID () – funktiolla:

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

tulos:
Tarkista väliaikaisen taulukon olemassaolo OBJECT_ID () - funktiolla 1

Miten tarkistaa, onko SQL Server-tietokannassa tietokantaa

Approach 3: Using sys.Objektien Luettelonäkymä

Voimme käyttää Sys: ää.Objektiluettelon avulla voit tarkistaa taulukon olemassaolon alla esitetyllä tavalla:

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

tulos
Tarkista taulukon Eksistanssi Sys: llä.Objektit katso

Miten tarkistaa, onko tietue olemassa taulukossa

lähestymistapa 4: käyttämällä sys: ää.Taulukoiden Luettelonäkymä

Voimme käyttää Sys: ää.Taulukoiden luettelonäkymä taulukon olemassaolon tarkistamiseksi alla olevalla tavalla:

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

tulos
Tarkista taulukon Eksistenssi Sys: llä.Taulukoiden Luettelonäkymä

Sys.Taulukoiden luettelonäkymä perii rivit Sys: stä.Objektien luettelonäkymä, Sys.objektien luettelonäkymää kutsutaan perusnäkymäksi missä SYS.Taulukoita kutsutaan johdetuiksi näkymiksi. Sys.Pöydät palauttavat rivit vain taulukon objekteille, kun taas Sys.Object view sen lisäksi, että se palauttaa taulukon objektien rivit, se palauttaa objektien rivit, kuten: tallennettu menettely, näkymät jne.

miten tarkistaa, onko SQL Server

lähestymistapa 5: Vältä sys: n käyttöä.sysobjects System table

meidän tulisi välttää SYS: n käyttöä.Sysobjects Järjestelmätaulukko suoraan, suora pääsy siihen vanhentuu joissakin tulevissa SQL Server-versioissa. Kuten kohti Microsoft Bol linkki, Microsoft ehdottaa käyttää luettelo näkymät sys.objects/sys.pöydät sys: n sijaan.sysobjects järjestelmätaulukko suoraan.

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

tulos:
Check Table Existance Using Sys.sysobjects System Table

:
How to check if a Database exist
How to check if a Stored Procedure exist in Sql Server
How to check if a View exist
How to check if Temp table exist
How to check if a record exist in table

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *