如何在MySQL5.1的现有列中添加非空约束
我有以下列名称称为“人”的表名称
P_Id(int), LastName(varchar), FirstName (varchar).
我忘了把NOT NULL
约束给P_Id
。
现在我试着用下面的查询将NOT NULL
Constraint添加到名为P_Id
现有列中,
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
查询时,您需要再次指定完整的列定义。 例如,如果列有DEFAULT
值或列注释,则需要在MODIFY
语句中将其与数据types和NOT NULL
一起指定,否则将会丢失。 防止这种不幸的最安全的做法是从SHOW CREATE TABLE YourTable
查询的输出中复制列定义,将其修改为包含NOT NULL
约束,并将其粘贴到ALTER TABLE... MODIFY...
查询中。
试试这个,你会知道改变和修改的区别,
ALTER TABLE table_name CHANGE curr_column_name new_column_name new_column_datatype [constrints]
ALTER TABLE table_name MODIFY column_name new_column_datatype [constraints]
- 您执行
MODIFY
操作来改变,但反向是不可能的。 - 您可以使用
CHANGE
特定列的名称和数据types。 - 您可以使用
MODIFY
修改特定的列数据types。 您不能使用此语句更改列的名称。
希望我详细解释清楚。