2010-06-08 4 views
1

J'ai une table avec quelques lignes.Incrémenter mon ID dans ma demande d'insertion

idClient, nom, adresse, pays, ...

je veux savoir comment je peux faire une insertion dans ce tableau avec auto incrémenter mon idClient dans ma demande sql ..? Thx.

edit: je veux faire une telle demande

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

Répondre

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

Ensuite, lorsque vous insérez dans la table, exclure la colonne de clé primaire auto-incrémentée de votre insert:

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

La nouvelle valeur de idClient sera générée.

C'est la seule façon de le faire en toute sécurité s'il y a plusieurs instances d'une application insérant des lignes à la fois. L'utilisation de la méthode MAX (idClient) que vous décrivez ne fonctionnera pas, car elle est soumise à des conditions de concurrence.

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

Définir la colonne id comme AUTO_INCREMENT, ignorez l'affectation au total:

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