问题描述
我有这张桌子:
months[months.indexOf("April")] = 'newVal';
MysqL> desc Customers;
现在,如果要插入示例数据:
+------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+-------+
| CustomerID | int(10) unsigned | NO | PRI | NULL | |
| Name | char(50) | NO | | NULL | |
| Address | char(100) | NO | | NULL | |
| City | char(30) | NO | | NULL | |
+------------+------------------+------+-----+---------+-------+
我知道我不能使ID为空,但这应该是MysqL的工作,以设置其编号并递增它们。因此,我尝试简单地不指定ID:
MysqL> insert into Customers values(null,'Julia Smith','25 Oak Street','Airport West');
ERROR 1048 (23000): Column 'CustomerID' cannot be null
现在我陷入了陷阱。我无法将id设置为null(这对于MysqL来说就是“增加我的ID”),并且由于没有默认值,因此无法将其省略。那么我应该如何使MysqL在新插入中为我处理id?
解决方法
主键意味着每个客户ID必须是唯一的。并且您也将其定义为NOT NULL,因此不允许INSERT为NULL
而不是> |客户编号| int(10)无符号|否| PRI | NULL |
制作
CustomerID BIGINT AUTO_INCREMENT PRIMARY KEY
您可以毫无问题地输入数据
ALTER TABLE table_name MODIFY CustomerID BIGINT AUTO_INCREMENT PRIMARY KEY
,
@米兰,
从表中删除CustomerID变量。然后使用以下详细信息再次添加该字段:
字段:CustomerID, 类型:BIGINT(10), 默认值:无, 自动递增:在复选框中打勾
单击“保存”按钮以将该新字段保存在表中。现在,我希望它在插入新记录时会起作用。谢谢。