台灣最大程式設計社群網站
線上人數
826
 
會員總數:245900
討論主題:189495
歡迎您免費加入會員
討論區列表 >> VB.NET >> SQL 如何刪除 not null default 0 的欄位?
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
SQL 如何刪除 not null default 0 的欄位?
價值 : 30 QP  點閱數:817 回應數:15
樓主

pkko
門外漢
0 27
552 64
發送站內信

各位大大好
當小弟要執行 Conn.Execute ("ALTER TABLE 訂單 DROP column 數字")的時候
會因為該[數字]欄位有 not null default 0的關係而無法刪除

請問要如何刪除此欄位呢?

搜尋相關Tags的文章: [ sql ] ,
本篇文章發表於2018-08-24 11:59
== 簽名檔 ==
努力!努力!再努力!!!
1樓
回應

pilipala
檢舉此回應
有 Constraint 的話,要先把 Constraint 刪掉,才能把刪除欄位
錯誤訊息應該有提供足夠的資訊給你才對,可以看一下
本篇文章回覆於2018-08-24 21:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

小魚
檢舉此回應
我也覺得問題應該不是你說的那樣,
要看錯誤訊息才會知道...
本篇文章回覆於2018-08-24 23:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

pkko
檢舉此回應
抱歉沒有說明清楚
造成各位大大的困擾
錯誤訊息如下:

執行階段錯誤:
物件'DF_訂單_數字_02084FDA'與資料行'訂單2'相依。
訂單=要刪除欄位的資料表
數字=要刪除的欄位
訂單=另外一個資料表

可是我沒有設定連動阿...我只有LEFT JOIN而已= =
求解...
本篇文章回覆於2018-08-24 23:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

小魚
檢舉此回應
很明顯這是某種鍵造成的,
我覺得比較有可能是外部鍵,其他人參考到這個欄位,或是他參考到另外一張表的欄位,
而且既然其他表會參考到它,
表示這個欄位有用到,
那為什麼要刪掉呢?
刪掉了原來的資料可能會出問題...
本篇文章回覆於2018-08-25 07:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

pilipala
檢舉此回應
問題內的語法 - "ALTER TABLE 訂單 DROP column 數字",不是要移除資料表欄位嗎?跟 LEFT JOIN 有甚麼關係阿?

DF_訂單_數字_02084FDA 這個名稱就是 default 0 這個預設值,要先移除後,才能移除欄位

本篇文章回覆於2018-08-25 10:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

pkko
檢舉此回應
各位大大不好意思
我想要移除欄位的原因其實是因為
我原本是設定數字
我想改成文字格式

LEFT JOIN 與 DROP 沒有關係
我以為是這樣導致關聯性
(因為我到現在還搞不懂為何此欄位不能被刪除或是變更)

我有查到先刪除預設值
但要怎麼刪除...我都無法執行成功...
本篇文章回覆於2018-08-25 10:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

小魚
檢舉此回應
物件'DF_訂單_數字_02084FDA'與資料行'訂單2'相依。

看起來是外部鍵,
你有對應到 訂單2 的某個欄位,
而且型態是數字,
所以不能變更成文字...
本篇文章回覆於2018-08-25 13:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

pkko
檢舉此回應
外部鍵=>是甚麼意思
如何設定對應欄位?
或是如何查詢對應欄位?
還是我要如何刪除對應欄位?

我在Create 資料表的時候都沒有設定對應
只有查詢的時候會互相join 查詢而已
本篇文章回覆於2018-08-25 13:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

小魚
檢舉此回應
真的嗎?
這個程式都是你寫的嗎?
本篇文章回覆於2018-08-25 14:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

pkko
檢舉此回應
真的阿
程式都是我寫的
我真的在Create Table的時候沒有設定兩個資料表的連結
只有設定Default 數字
我上網查也是因為這個Default 的關係無法刪除欄位
但不知道要如何刪除Default...
本篇文章回覆於2018-08-25 20:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

小魚
檢舉此回應
所以...
你用的是什麼資料庫?
本篇文章回覆於2018-08-26 00:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

pkko
檢舉此回應
MS SQL
本篇文章回覆於2018-08-26 09:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

小魚
檢舉此回應
的確DEFAULT會造成無法更改及刪除欄位,
看來我之前沒做過這種事...

你可以在 sysobjects 這個資料表找到相關的DF_物件,

然後參考 這個網站 來更改欄位
本篇文章回覆於2018-08-26 10:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
最有價值解答

Kog
檢舉此回應
感覺一開始的解答就沒錯
『有 Constraint 的話,要先把 Constraint 刪掉,才能把刪除欄位』
只是後面的敘述有點被誤導了

本篇文章回覆於2018-08-27 09:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
作者回應

pkko
檢舉此回應
Dear Kog 大大,

非常感謝您,其他方式我都試過了
也上網爬了更多的方式,我至少嘗試了數十次
但完全沒有想到,居然就是把它出現的錯誤訊息包含數字的部分和英文的部分完整輸入
才可以刪除掉...換句話說
不是網路上沒資料,是我看不懂別人的訊息
可能每個人的02084FDA訊息不同

但您的語法我直接輸入其實無法執行
這邊回饋給您

所有底線都要輸入兩個底線才可正常刪除
非常感謝您哦^_^
本篇文章回覆於2018-08-27 11:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.