我有從遞減TABLEA命令輸出以下內容的表A:刪除默認約束
+---------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(50) | NO | | | |
| city | varchar(50) | YES | | NULL | |
| state | char(2) | YES | | NULL | |
| country | varchar(30) | YES | | NULL | |
| notes | longtext | YES | | NULL | |
| type | varchar(50) | NO | | NULL | |
+---------+-------------+------+-----+---------+----------------+
現在有3列有NOT NULL約束:
- ID
- 名
- 類型
對於列id和類型,我需要刪除默認約束。基本上我想要默認值:無。我不想使用變通方法,例如。爲varchar設置缺省值爲''。
和NULL,NONE之間的區別「」從這次討論Default-values-for-varchar-and-int-mysql-data-types
我用命令試圖變得更加清晰:
alter table tableA alter column type drop default;
查詢運行正常,但沒有行受到影響。當我運行describe命令時,默認值沒有改變。
如果我將默認值設置爲'',我遇到了不同的問題 - 數據庫允許在db中輸入空字符串。對於我來說,這相當於爲列的值插入NULL,我不想允許這樣做。
我需要一些關於如何處理默認值的指導,在這種情況下,我不能允許空字符串作爲數據庫中的數據。我想提及的是,我打算在代碼中加入驗證以檢查傳入數據是空字符串還是NULL。但是,如果驗證不起作用等,我想確保數據庫可以拒絕添加這樣的數據。
任何幫助真的很感激。
http://stackoverflow.com/questions/5807231/mysql-check-constraint-alternative – biziclop