首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

預存程序 FuncDropColumn:安全移除資料表欄位(含存在性檢查)

     編輯:關於SqlServer

功能說明

自動偵測資料表是否存在指定欄位,存在則執行 DROP COLUMN,避免因欄位不存在導致腳本報錯,提升部署腳本健壯度。

完整程式碼

CREATE PROCEDURE FuncDropColumn
    @tablename VARCHAR(128),  -- 資料表名稱
    @Columnname VARCHAR(128)  -- 欄位名稱
AS
BEGIN
    SET @tablename = LTRIM(RTRIM(@tablename))
    SET @Columnname = LTRIM(RTRIM(@Columnname))

    DECLARE @string VARCHAR(8000)

    IF EXISTS (
        SELECT * FROM syscolumns 
        WHERE id = OBJECT_ID(@tablename) AND name = @Columnname
    )
    BEGIN
        SELECT @string = 'ALTER TABLE ' + @tablename 
            + ' DROP COLUMN [' + LTRIM(RTRIM(@Columnname)) + ']'
        PRINT @string
        EXECUTE(@string)
    END
END
GO

呼叫範例

EXECUTE FuncDropColumn 'PSZ31', 'Z31No'

設計重點

  • 存在性檢查防止 DROP COLUMN 失敗拋出錯誤
  • 方括號包裹欄位名,相容保留字與空格
  • 輸出執行的 SQL 陳述句(PRINT),利於稽核與除錯
  • 搭配 FuncADDColumn 可構建完整的欄位生命週期管理工具集

注意事項

  • 欄位若有相依物件(預設值、條件約束、索引、檢視表參考),必須先移除相依物件才能 Drop Column
  • 大量資料表執行可能產生鎖定,建議維護時段執行
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved