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

标签 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');

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

我试过:

  1. insert into persons values ('John', 'Smith', 'LA', 'LA');
  2. insert into persons values (null, 'John', 'Smith', 'LA', 'LA');
  3. 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/

相关文章:

php - 为什么我不应该在 PHP 中使用 mysql_* 函数?

Mysql外键

mysql - Woocommerce mySQL 查询 - 列出所有订单、用户和购买的商品

php - Doctrine2 静静地无法插入数据

sqlite - 将SQLite的INSERT INTO与SELECT查询一起使用时,是否存在行限制?

php - 是否可以显示这样的表格?

Mysql - 查询性能

java - 通过 hibernate 插入数据库

php - 如何在 INSERT 之前获取 mysql 行的 ID

c# - 将连接释放回 MongoDB 连接池