我有从递减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