1. 程式人生 > >SQL Server修改已有欄位型別,並新增預設約束

SQL Server修改已有欄位型別,並新增預設約束

    當資料表中存在資料,修改具有預設約束的欄位定義時,需要先刪除已有約束,才能對欄位定義進行修改;而在SQL Server建表時建立的預設約束,其名稱後會自動生成一段隨機碼,因此在刪除時需要找到(在SQL Server Management Studio中選擇表——>約束,可以看到以DF_開頭的預設約束)已有約束名,再進行刪除,這一過程較為繁瑣。

    現採用以下程式碼實現對預設約束的自動匹配,並修改。看程式碼:

-- 修改已有欄位型別(eg:整型)為字串,並新增、修改(如果有的話)預設約束(預設值為空串)
USE [庫名]
DECLARE @name VARCHAR(50);
SELECT @name=b.name FROM syscolumns a,sysobjects b 
WHERE a.id=object_id('[LGShare_OrgFiles]') AND b.id=a.cdefault AND a.name='FromWhere' AND b.name LIKE 'DF%';
IF @name IS NOT NULL BEGIN
    EXEC('ALTER TABLE [表名] DROP CONSTRAINT '
[email protected]
); --刪除已有約束 ALTER TABLE [表名] ALTER COLUMN [列名] NVARCHAR(4) NOT NULL; --修改欄位定義 EXEC('ALTER TABLE [表名] ADD CONSTRAINT '[email protected]+' DEFAULT '+''''+''''+' FOR [列名]'); -- 新增修改後的約束,注意此處空串的寫法 END ELSE BEGIN ALTER TABLE [表名] ADD CONSTRAINT DF_列名 DEFAULT '' FOR [列名]; --新增新約束 END


f you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!