1. 程式人生 > 其它 >SQLserver 如何刪除設定了預設值的列

SQLserver 如何刪除設定了預設值的列

技術標籤:SQLserver資料庫sqlserversql經驗分享mysql

SQLserver 刪除含預設值的列出現以下錯誤:

訊息 5074,級別 16,狀態 1,第 79 行
物件’DF__student__入學時間__3F466844’ 依賴於 列’入學時間’。
訊息 4922,級別 16,狀態 9,第 79 行
由於一個或多個物件訪問此 列,ALTER TABLE DROP COLUMN 入學時間 失敗。

接下來介紹刪除操作

例如以下例子,建立一個學生表:

create table student 
(學號 char(9) primary key,
姓名 char(20) unique
, 性別 char(2), 年齡 smallint, 所在系 char(20) );

新增新列 ‘入學時間 date’,並取預設值為‘2020-09-14’.

alter table student 
add 入學時間 date default '2020-09-14'

插入元組資料:
在這裡插入圖片描述
接下來執行以下操作:
刪除student 表中的‘入學時間’列

alter table student 
drop column 入學時間;

則會出現以下錯誤:

訊息 5074,級別 16,狀態 1,第 79 行
物件’DF__student__入學時間__3F466844’ 依賴於 列’入學時間’。
訊息 4922,級別 16,狀態 9,第 79 行

由於一個或多個物件訪問此 列,ALTER TABLE DROP COLUMN 入學時間 失敗。

在這裡插入圖片描述
此時我們應該要先刪除 入學時間 的約束
ALTER TABLE 表名 DROP CONSTRAINT 約束名
而約束名怎麼找?
開啟student表–約束–>入學時間表名
在這裡插入圖片描述
也可以直接 右鍵 表名 [DF__student__入學時間__3F466844]–>編寫約束指令碼為–>DROP到–>新查詢編輯器視窗 直接複製裡面的刪除語句

ALTER TABLE [dbo].[student] 
DROP CONSTRAINT [DF__student__入學時間__3F466844]

執行該語句:在這裡插入圖片描述
即完成刪除設定了預設值的列。