Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

4 начина да проверите дали таблица съществува, преди да я пуснете в SQL Server (T-SQL)

Изпускането на таблица в SQL лесно. Просто използвате DROP TABLE myTable където myTable е името на таблицата, която искате да премахнете. Можете да използвате този метод, за да пуснете таблица в SQL Server чрез T-SQL скрипт.

Но ще получите грешка, ако таблицата всъщност не съществува. Тоест, освен ако първо не проверите за съществуването на таблицата.

По-долу са дадени четири начина за използване на T-SQL, за да проверите дали таблицата съществува, преди да я изпуснете.

Опция 1:IF EXISTS Клауза

Когато използваме SQL Server 2016 или по-нова версия, можем да използваме IF EXISTS клауза на DROP TABLE оператор, за да проверим съществуването на таблицата, преди да се опитаме да я изпуснем:

DROP TABLE IF EXISTS t1;

Това пуска таблица, наречена t1 ако съществува.

Ето резултата от изпълнението на горния израз, когато таблицата съществува (и следователно е отпаднала):

Commands completed successfully.

И ето какво получаваме, ако незабавно изпълним изявлението отново (т.е. когато таблицата не съществува):

Commands completed successfully.

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

Ето какво се случва, ако се опитаме да пуснем таблицата, без да използваме IF EXISTS клауза:

DROP TABLE t1;

Резултат:

Msg 3701, Level 11, State 5, Line 1
Cannot drop the table 't1', because it does not exist or you do not have permission.

Опция 2:Проверете идентификатора на обекта

Като алтернатива можем да използваме OBJECT_ID() функция за проверка за съществуването на таблицата, преди да се опитаме да я изпуснем:

IF OBJECT_ID(N'dbo.t1', N'U') IS NOT NULL
DROP TABLE dbo.t1;
GO

Горният пример проверява идентификатора на обекта за dbo.t1 маса. Вторият аргумент на OBJECT_ID() определя типа обект, който търсим. В този случай използваме U , което е за „дефинирана от потребителя таблица“.

OBJECT_ID() връща идентификационния номер на обект от база данни на обект с обхват на схема. Ако обектът съществува, той няма да върне NULL и следователно можем да пуснем таблицата. Ако обектът не съществува или ако нямате достъп до него, функцията връща NULL, а DROP TABLE изявление няма да се изпълнява.

Опция 3:Заявка information_schema.tables

Друг начин да проверите дали таблица вече съществува е да потърсите information_schema.tables изглед:

IF EXISTS (
    SELECT * FROM information_schema.tables
    WHERE table_schema = 'dbo' AND table_name = 't1') 	
    DROP TABLE dbo.t1;

Това прави нещо подобно на предишния пример; той проверява за съществуването на таблицата и я създава само ако не съществува.

Опция 4:Заявка за sys.tables

Можем също да направим заявка за sys.tables изглед на системния каталог:

IF EXISTS (
    SELECT * FROM sys.tables t 
    JOIN sys.schemas s ON (t.schema_id = s.schema_id) 
    WHERE s.name = 'dbo' AND t.name = 't1') 	
    DROP TABLE dbo.t1;

SQL Server предоставя много други начини за проверка за съществуването на таблици. Вижте 6 начина да проверите дали таблица съществува в SQL Server за примери.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да инсталирате SQL Server на Mac с VirtualBox

  2. SQL Server - намерете n-то срещане в низ

  3. Как езиковите настройки могат да повлияят на вашите FORMAT() резултати в SQL Server (T-SQL примери)

  4. Как да използвам псевдоним в клаузата where?

  5. Алгоритъм за сортиране по GUID на SQL Server. Защо?