Nová syntaxe DROP … IF EXISTS je jednou z nejpraktičtějších novinek v SQL Serveru 2016 a při praktickém vývoji i přípravě deployment skriptů nám může ušetřit spoustu starostí a práce navíc. DROP… IF EXISTS lze použít tehdy, pokud chceme odstranit některý z podporovaných databázových objektů, ale nejsme si jisti, zda objekt v danou chvíli existuje nebo se prostě jen chceme vyhnout situaci, že by z jakéhokoliv důvodu mohla být vygenerována výjimka.
Syntaxe je v porovnání s dosud používanými způsoby opravdu jednoduchá:
-- Before SQL 2016 IF EXISTS (SELECT * FROM sys.[tables] WHERE [name] = 'SampleTable') DROP TABLE [dbo].[SampleTable] GO -- SQL 2016 DROP TABLE IF EXISTS dbo.[SampleTable] GO
Tabulka dbo.SampleTable v databázi neexistuje s pokud bychom vykonali DROP TABLE [dbo].[SampleTable], došlo by k výjimce:
Proto jsme ve stávajícím kódu vždy museli vždy předem zjišťovat, zda daný objekt existuje, a to ještě pro každý objekt různým dotazem, a bylo jednoduché udělat chybu.
S klauzulí DROP…IF EXISTS nám všechny tyto starosti odpadají.
DROP…IF EXISTS je podporováno pro tyto databázové objekty:
|
|
Kromě toho můžeme novou syntaxi využít i při manipulaci se sloupci pomocí příkazu ALTER TABLE:
-- Column ALTER TABLE [dbo].[SampleTable] DROP COLUMN IF EXISTS [SampleColumn] GO -- Constraint ALTER TABLE [dbo].[SampleTable] DROP CONSTRAINT IF EXISTS [SampleConstraint] GO