【发布时间】:2010-06-08 08:22:49
【问题描述】:
我有一个包含一些行的表。
idClient、姓名、地址、国家、...
我想知道如何通过在我的 sql 请求中自动增加我的 idClient 来插入到这个表中......? 谢谢。
编辑:我想做这样的请求
insert into Client values((select max(idClient),...)
【问题讨论】:
我有一个包含一些行的表。
idClient、姓名、地址、国家、...
我想知道如何通过在我的 sql 请求中自动增加我的 idClient 来插入到这个表中......? 谢谢。
编辑:我想做这样的请求
insert into Client values((select max(idClient),...)
【问题讨论】:
ALTER TABLE Client CHANGE idClient
idClient INT AUTO_INCREMENT PRIMARY KEY;
然后当你插入到表中时,从你的插入中排除自动递增的主键列:
INSERT INTO Client (name, address, country)
VALUES ('name', 'address', 'country')...;
idClient 的新值将被生成。
如果有多个应用程序实例同时插入行,这是安全执行此操作的唯一方法。使用您描述的 MAX(idClient) 方法将不起作用,因为它受制于竞争条件。
【讨论】:
insert into Client values(NULL,"name","some address", "country")
【讨论】:
将id列定义为AUTO_INCREMENT,然后完全跳过赋值:
CREATE TABLE clients (
id MEDIUMINT NOT NULL PRIMARY KEY,
name VARCHAR(255),
addr VARCHAR(255),
country VARCHAR(255),
PRIMARY KEY (id));
INSERT INTO clients
(name, addr, country)
VALUES
("name", "addr", "country");
【讨论】: