都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

便利な SQL の関数とか、構文とか、その他色々まとめてみる - その14 ( もし、そのオブジェクトが存在したら消すを単純に書いてみる ) -

 出発前に記事書きます。昨日は Tech Summit 2016 に行ってきました。
ryuchan.hatenablog.com

 仕事の都合と同時間帯に参加したいセッションが重なったこともあり、残念ながら興味のあるセッションすべて参加することはできませんでした。次は来年の de:code ですね。
ryuchan.hatenablog.com

 来年の de:code は、2017/5/23(火)から24(水)の開催のようです。

 セッションに参加して、簡単なことなんですが知らないことがありました。
DROP IF EXISTS – new thing in SQL Server 2016 | SQL Server Database Engine Blog

 通常、DROP 文を書くときは、対象のオブジェクトが存在しているかをチェックしてから DROP するかと思います。

IF OBJECT_ID('dbo.Product, 'U') IS NOT NULL
 DROP TABLE dbo.Product;
 
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'trProductInsert')
 DROP TRIGGER trProductInsert

 上記のクエリを SQL Server 2016 では、下記のようにスッキリ記述することができます。

DROP TABLE IF EXISTS dbo.Product
 
DROP TRIGGER IF EXISTS trProductInsert

 下記のオブジェクトに使用できます。これで DDL 文がかなりスッキリしそうです。

  • AGGREGATE
  • PROCEDURE
  • TABLE
  • ASSEMBLY
  • ROLE
  • TRIGGER
  • VIEW
  • RULE
  • TYPE
  • DATABASE
  • SCHEMA
  • USER
  • DEFAULT
  • SECURITY POLICY
  • VIEW
  • FUNCTION
  • SEQUENCE
  • INDEX
  • SYNONYM

 ALTER 文にも使えます。

ALTER TABLE DROP COLUMN IF EXISTS

ALTER TABLE DROP CONSTRAINT IF EXISTS

 さて、残りの準備しよう。