如何在不指定非自动增量主键的值的情况下插入数据?

cc.*_*cc. 3 mysql insert

我有这张桌子:

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');
Run Code Online (Sandbox Code Playgroud)

如何在不指定主键值的情况下将数据插入表中(主键没有"auto_increment"属性).

我尝试过:

  1. 插入人的价值观('约翰','史密斯','洛杉矶','洛杉矶');
  2. 插入人的价值观(null,'John','Smith','LA','LA');
  3. 插入人的价值观(汽车,'约翰','史密斯','洛杉矶','洛杉矶');

但没有运气

Sco*_*son 6

主键不能为空,如果你没有将它们设置为自动增量,那么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');
Run Code Online (Sandbox Code Playgroud)

这使用了一个subselect,所以如果你使用旧版本的MySQL,它可能无法正常工作.