2012-03-24 14 views
0

自動増分主キー列を持つ表に行を挿入する場合、その行に割り当てられる値を取得する方法はありますか?自動増分pkで挿入される値を取得できますか?

この値は、同じ行の別の列の文字列の一部として使用したいと思います。

MAX(id)+1を実行しても、十分に堅牢ではないようです。 挿入を実行してLAST_INSERT_ID()で更新するのは悪いです。これは2つの別々のdb呼び出しだからです。

おかげ

EDIT

誰もがこれをどう思うん:

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と行で終わるべきであり、 "name-5"のname。これはちょっと面倒な方法ですが、うまくいくはずです。

思考?

+0

私はあなたがそれを行うことはできないと思います。( – haltabush

答えて

1

あなたは、SQLコマンド「のSHOW TABLE STATUSの」

はそれを試してみて、そしてそこから「AUTO_INCREMENT」値をプルする方法を見つけるために、さらにGoogleになっているはずです。

+0

応答のおかげで、 'information_schema'データベースを見て値を得る別の方法が見つかりました。 –

+1

私はそれをそのまま受け入れるつもりです私を正しい道に導いた –

1

auto_incrementフィールドではできません。代わりに手動でUIDunique primary key)を生成し、この目的のために使用することができます。

0

これは悪くありません。外部でキーを生成していない場合は、noを返します。あなたはテーブルにトリガーを置くことができ、それを非自動インクリメントにして、それ以外の場合は自分自身でキーを生成することができます。

関連する問題