我有一个名为"Person"的表名,列名如下

P_Id(int),
LastName(varchar),
FirstName (varchar).

我忘了给P_IdNOT NULL.

现在,我try 使用下面的查询向名为P_Id的现有列添加NOT NULL个约束,

1. ALTER TABLE  Person MODIFY  (P_Id NOT  NULL);
2. ALTER TABLE Person ADD CONSTRAINT NOT  NULL NOT NULL (P_Id);

我得到语法错误....

推荐答案

只需使用ALTER TABLE... MODIFY...查询,并将NOT NULL添加到现有的列定义中.例如:

ALTER TABLE Person MODIFY P_Id INT(11) NOT NULL;

警告:使用MODIFY查询时,需要再次指定full列定义.例如,如果您的列有DEFAULT值或列注释,则需要在MODIFY语句中指定它以及数据类型和NOT NULL,否则它将丢失.防止此类错误的最安全做法是从SHOW CREATE TABLE YourTable查询的输出中复制列定义,修改它以包含NOT NULL约束,然后将其粘贴到ALTER TABLE... MODIFY...查询中.

Mysql相关问答推荐

SQL中的搜索模式

MySQL在使用SELECT*时不使用索引

用于将重复行的唯一列值作为单独列获取的SQL查询

MySQL多次联接同一个表使计数变得奇怪

MySQL滑动窗口动态间隔?

根据现有行 Select 月份日期

如何确保 SQL 记录的列不引用它自己的主键?

条件触发mysql

为什么 `count` 函数有效但 `sum` 无效?

SQL: Select TEXT 字段的子字符串比整个值快

需要按总金额检索前 3 个供应商,每个类别 - 子类别

MySQL Join 查询位置从订单

如何显示患者预约中的专业人员姓名?

如何在任何连续范围内获得最大值

MySQL 查询组按日期(12 小时间隔)

如何查看打开了多少 MySQL 连接?

你如何在 Node.js 中模拟 MySQL(没有 ORM)?

默认为空字符串的列

在 MySQL 中删除数据库返回删除数据库错误:66

使用 Docker 我收到错误:SQLSTATE[HY000] [2002] 没有这样的文件或目录