【发布时间】:2012-06-18 00:47:34
【问题描述】:
我有一个 tableA,其中包含 desc tableA 命令的以下输出:
+---------+-------------+------+-----+---------+----------------+
| 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 和 type,我需要删除默认约束。基本上我想要默认值:无。我不想使用变通方法,例如 .将 varchar 的默认值设置为 ''。
从Default-values-for-varchar-and-int-mysql-data-typesDefault-values-for-varchar-and-int-mysql-data-types的讨论中可以更清楚地看出 NULL、NONE 和 '' 之间的区别
我尝试使用命令:
alter table tableA alter column type drop default;
查询运行良好,但没有行受到影响。当我运行 describe 命令时,默认值没有变化。
如果我将默认值设置为 '' 我会遇到不同的问题 - 数据库允许在数据库中输入空字符串。对我来说,这相当于为列的值插入 NULL,我不想允许这样做。
我需要一些关于如何在这种情况下处理默认值的指导,在这种情况下我不能允许空字符串作为数据库中的数据。我想提一下,我计划在代码中添加验证,以检查传入的数据是空字符串还是 NULL。但以防万一验证不起作用等,我想确保数据库可以拒绝添加此类数据。
非常感谢任何帮助。
【问题讨论】:
标签: mysql