我有这张表:
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)
1. insert into persons values (1, 'John', 'Smith', 'LA', 'LA');
2. insert into persons (p_id, lastname, firstname, address, city) values (2, 'John', 'Smith', 'LV', 'LV');
如何在不指定主键值的情况下将数据插入表中(主键没有“auto_increment”属性)。
我试过:
- insert into persons values ('John', 'Smith', 'LA', 'LA');
- insert into persons values (null, 'John', 'Smith', 'LA', 'LA');
- insert into persons values (auto, 'John', 'Smith', 'LA', 'LA');
但没有运气
最佳答案
主键不能为空,如果不设置自增,MySQL怎么知道你要往表里放什么?您需要指定 ID(可能通过选择 MAX(P_Id) 并将其加 1)或将其设置为自动递增。
虽然简单地添加一个自动递增字段绝对是最好的方法,你可以尝试这样的事情:
INSERT INTO Persons (P_Id, FirstName, LastName, Address, City)
VALUES ((SELECT MAX(P_Id) + 1 FROM Persons), 'John', 'Smith', 'LA', 'LA');
这使用了子选择,所以如果您使用的是旧版本的 MySQL,它可能无法工作。
关于mysql - 如何在不为非自增主键指定值的情况下插入数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1725791/