2012-04-21 8 views
3

挿入クエリを実行したが重複したキーエラーのために失敗した場合、別の選択を行わずにプライマリキーを取得する方法はありますか?基本的にはDUPLICATE KEYエラーの後にプライマリキーを取得しますか?

:1フィールド:myvalue IDを持つレコードがすでに存在するため

INSERT INTO tbl (field) VALUES ('myvalue') 

これが失敗しました。別のクエリを実行せずに1:

今、私はそのIDを知りたい

SELECT id FROM tbl WHERE field = 'myvalue' 

は、それがpossibileですか?

+1

どのようにして 'IDを得るのですか?それはデフォルト値ですか?あなたは 'AUTO_INCREMENT'を持ってはいけませんか? – Halcyon

+2

SQLを匿名化した可能性があります。 'field'(' id'の代わりに)がキーされたフィールドでなければ、最初のクエリがどのようにしてプライマリキーエラーを引き起こすのか分かりません。 –

+0

フィールドはユニークで、もちろんIDのような例です:X – dynamic

答えて

0

挿入される行のIDを取得するための各ライブラリが用意されています。

のように:最後に挿入された行のIDをretriveすることの後に簡単なmysql_query()使用mysql_insert_id()ため

Check this link

EDIT:

確認してくださいというあなたはfield列に一意のインデックスを定義した場合。

そうなら、あなたはここで、列に重複field

+0

mysql_insert_idはクエリが正常に実行された場合にのみ機能します。 OPの質問によると、クエリの挿入が失敗しました – Dhiraj

+0

重複したキーエラーが発生した場合、mysql_insert_id doenst 'が動作します – dynamic

+0

しかし、どのようにクエリが失敗しますか? IDを提供していないので、重複したフィールドエラーが発生します。 –

関連する問題