日前上揚志強老師的線上課程時看見楊老師的TSQL中有一句我沒用過的寫法,當下引起了我的興趣而測試了一下。發現該語法只有SQL2016才支援,所以算是新語法,在此分享給大家。
以前我們要刪除已存在的資料表,常用語法如下:
--用Object_ID函數取出該資料表的ID,如果回傳為NULL則表示資料表不存在
IF (OBJECT_ID('TableName')) Is Not Null
Drop Table TableName;
--先Select系統資料表,看看目標Table是否存在,存在的話就刪除
IF EXISTS(Select name From sys.tables Where Name='TableName')
Drop Table TableName
日前無意間看見楊老師用了一個更簡易的語法DROP IF EXISTS,範例如下:
Drop Table IF Exists TableName
由上圖範例可以看見當我們執行完該語法後,資料表Tb1就被刪除了。
DROP IF EXISTS也支援刪除資料表的Column及Constraint ,語法如下:
Alter Table [TableName] Drop Column IF Exists [ColumnName]
Alter Table [TableName] Drop Constraint IF Exists [ConstraintName]
下圖範例為刪除Tb1中的Phone2欄位。
下圖範例為刪除Tb1中的Constraint名為DF_tb1_phone2。
最後下圖表列DROP IF EXISTS語法支援的資料庫物件
AGGREGATE | PROCEDURE | TABLE |
ASSEMBLY | ROLE | TRIGGER |
VIEW | RULE | TYPE |
DATABASE | SCHEMA | USER |
DEFAULT | SECURITY POLICY | VIEW |
FUNCTION | SEQUENCE | |
INDEX | SYNONYM |
我是ROCK
rockchang@mails.fju.edu.tw