Увеличить мой идентификатор в моем запросе на вставку - PullRequest
1 голос
/ 08 июня 2010

у меня есть таблица с несколькими строками.

idClient, имя, адрес, страна, ...

Я хочу знать, как я могу сделать вставку в эту таблицу с автоматическим увеличением моего idClient в моем запросе sql ..? Thx.

изменить: я хочу сделать запрос, как это

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

Ответы [ 3 ]

1 голос
/ 08 июня 2010
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 голосов
/ 08 июня 2010

Определите столбец идентификатора как 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");
0 голосов
/ 08 июня 2010
insert into Client values(NULL,"name","some address", "country")
...