2012-03-24 55 views
0

當將行插入帶有自動增量主鍵列的表中時,是否有辦法獲取要分配給該行的值?可以通過自動增量pk獲取插入的值嗎?

爲了清楚起見,我想將此值用作同一行上不同列的字符串的一部分。

做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' 
) ; 

這樣,你應該用行結束了5 id例如,和「名稱-5」的name。這是一種混亂的方式去做,但它應該工作,不是嗎?

想法?

+0

我不認爲你可以那樣做,對不起:( – haltabush 2012-03-24 01:58:42

回答

1

你應該看看到SQL命令「SHOW TABLE STATUS」

試試吧,再谷歌找到了如何拉「AUTO_INCREMENT」價值出來。

+0

)感謝你的迴應,我發現了另一種可能的方法來獲取值在'information_schema'數據庫中的值 – 2012-03-24 13:19:03

+1

我會接受這個使我走上了正確的道路 – 2012-03-31 14:32:03

1

你不能用auto_increment字段。相反,您可以手動生成UIDunique primary key)並將其用於此目的。

0

不是那麼糟糕。如果你不是從外部生成密鑰,那麼不需要。你可以在桌子上放置一個觸發器,使其成爲一個非自動增量,然後自己生成密鑰。