Можно ли при insert в какое нибудь поле вставить текущее автоинкрементное значение

maxim

Новичок
Можно ли при insert в какое нибудь поле вставить текущее автоинкрементное значение

Можно ли одним insert в какое нибудь поле вставить текущее автоинкрементное значение?
например пусть id автоинкрементное поле, а sort поле int.

Можно ли написать (и в какой версии MySQL) нечто подобное

insert into table (id,sort) VALUE (null, id)
чтобы после вставке в записи было (20,20)
 

wizard

Новичок
Нет, так как до вставки значение не будет известно.
Сделай хранимую процедуру, если у тебя 5 mysql.
 

WP

^_^
wizard
Не знаешь не говори.
maxim
Почитай документацию, там все написано. LAST_INSERT_ID() тебе знакомо?
 

maxim

Новичок
Т.е.
insert into table (id,sort) VALUE (null, LAST_INSERT_ID() +1) ?
Счас почитаю .

-~{}~ 28.07.06 23:23:

почитал, попробовал - не катит

-~{}~ 28.07.06 23:25:

WP

почему-то не работает, вставляет 0
 

wizard

Новичок
WP
Как узнать значение вставленной строки, до её вставки?
Объясни плиз.

Ну так как это сделать-то? Заинтриговал, давай ответ)

-~{}~ 30.07.06 17:55:

Так можно это сделать или нет?
 

denver

?>Скриптер
MAX(primary_id)+1? ;)

-~{}~ 30.07.06 18:48:

ЗЫ. Только глупо это и незачем, даже с триггером.
 

ForJest

- свежая кровь
[sql]
CREATE TABLE `simple` (
`id` INT NOT NULL AUTO_INCREMENT ,
`val` INT NOT NULL ,
PRIMARY KEY ( `id` )
);
INSERT INTO simple
VALUES (
NULL , -1);
UPDATE simple SET val = LAST_INSERT_ID() WHERE id = LAST_INSERT_ID();
[/sql]
Так будет работать :). Т.к. LAST_INSERT_ID() safe для каждого соединения и будет содержать значение именно последней вставленной записи для данного соединения. Даже если за время между двумя запросами произойдёт ещё одна вставка.
 

zerkms

TDD infected
Команда форума
очень интересно - а зачем дублировать информацию?
 

wizard

Новичок
Имхо, там поле по которому производится сортировка )
 

ForJest

- свежая кровь
denver
Это не даёт гарантии в многопоточном приложении.
 
Сверху