2010-06-08 39 views
1

我有一个表有一些行。在我的插入请求中增加我的ID

idClient,名称,ADRESS,国家,...

我想知道我可以做一个插入此表有自动递增我idClient在我的SQL请求..? Thx。

编辑:我想要做这样的

insert into Client values((select max(idClient),...) 

回答

1
ALTER TABLE Client CHANGE idClient 
    idClient INT AUTO_INCREMENT PRIMARY KEY; 

一个请求。然后,当你插入到表,从插入排除自动递增的主键列:

INSERT INTO Client (name, address, country) 
    VALUES ('name', 'address', 'country')...; 

将生成idClient的新值。

如果应用程序有多个实例一次插入行,这是安全地执行此操作的唯一方法。使用您描述的MAX(idClient)方法将不起作用,因为它受到竞争条件的限制。

0
insert into Client values(NULL,"name","some address", "country") 
0

定义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");