Изпускането на таблица в 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 за примери.