Можно ли получить значение, вставляемое с автоматическим увеличением pk? - PullRequest
0 голосов
/ 24 марта 2012

При вставке строки в таблицу со столбцом первичного ключа с автоинкрементом, есть ли способ получить значение, которое будет присвоено этой строке?

Чтобы было понятно, я хочу использоватьэто значение как часть строки для другого столбца в той же строке.

Выполнение MAX (id) + 1 не кажется достаточно надежным.И делать вставку, а затем обновление с помощью LAST_INSERT_ID () плохо, потому что это 2 отдельных вызова БД.

Спасибо

РЕДАКТИРОВАТЬ :

Что делаетвсе думают об этом:

INSERT INTO `mydatabase`.`mytable` (`name`, `description`) 
VALUES
  (
    CONCAT(
      'name-',
      CAST(
        (SELECT 
          `auto_increment` + 1 
        FROM
          `information_schema`.`TABLES` 
        WHERE `TABLE_SCHEMA` = 'mydatabase' 
          AND `TABLE_NAME` = 'mytable') AS CHAR
      )
    ),
    'description of this thing'
  ) ;

Таким образом, вы должны получить строку с id из 5, например, и name из "name-5".Это немного грязный способ, но он должен работать, не так ли?

Мысли?

Ответы [ 3 ]

1 голос
/ 24 марта 2012

Вы должны заглянуть в команду SQL "ПОКАЗАТЬ СОСТОЯНИЕ ТАБЛИЦЫ"

Попробуйте и зайдите в Google, чтобы узнать, как извлечь из него значение "auto_increment".

1 голос
/ 24 марта 2012

Вы не можете сделать с полем auto_increment. Вместо этого вы можете вручную сгенерировать UID (unique primary key) и использовать его для этой цели.

0 голосов
/ 24 марта 2012

Не так уж и плохо.Если вы не генерируете ключ извне, то нет.Вы можете поместить триггер в таблицу и сделать это неавтоматическим шагом, а затем сгенерировать ключ самостоятельно.

...