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