SQL Server 2016 CTP3: DROP IF EXISTS (DIE)

Database beheerders en gebruikers die al langer van SQL Server en T-SQL gebruik maken, kennen vast deze veelgebruikte query nog:

IF OBJECT_ID('dbo.Product, 'U') IS NOT NULL
DROP TABLE dbo.Product;

Misschien dat u deze code zelfs nu nog gebruikt. Misschien dat u het (ooit) gemist heeft: Microsoft heeft bij de introductie van SQL Server 2016, CTP3 de functie DROP uitgebreid met IF EXISTS. De nieuwe functie ziet er dan als volgt uit:

DROP TABLE IF EXITS dbo.Product;

Veel makkelijker toch? Deze nieuwe uitbreiding op de functie DROP werkt op heel veel plaatsen, namelijk:

  • DROP AGGREGATE IF EXISTS
  • DROP ASEMBLY IF EXISTS
  • DROP VIEW IF EXISTS
  • DROP DATABASE IF EXISTS
  • DROP DEFAULT IF EXISTS
  • DROP FUNCTION IF EXISTS
  • DROP INDEX IF EXISTS
  • DROP PROCEDURE IF EXISTS
  • DROP ROLE IF EXISTS
  • DROP RULE IF EXISTS
  • DROP SCHEMA IF EXISTS
  • DROP SECURITY POLICY IF EXISTS
  • DROP SEQUENCE IF EXISTS
  • DROP SYNONYM IF EXISTS
  • DROP TABLE IF EXISTS
  • DROP TRIGGER IF EXISTS
  • DROP TYPE IF EXISTS
  • DROP USER IF EXISTS
  • DROP VIEW IF EXISTS

Aanvullend hierop kan “DIE” (DROP IF EXISTS) ook worden toegepast op velden en constraints binnen ALTER TABLE, dus:

  • ALTER TABLE DROP COLUMN IF EXISTS[/li]
  • ALTER TABLE DROP CONSTRAINT IF EXISTS

Zelf vind ik de functie DROP IF EXISTS een stuk handiger dan de scripts die voor SQL Server 2016, CTP3 nodig waren om alleen iets te controleren en vervolgens te verwijderen.