1

私はSQLにかなり慣れていませんが、非常に複雑なクエリを作成しようとしていますが、最初の部分で失敗しています。IDを自動的にインクリメントするテーブルの新しい行を作成し、すぐにIDを抽出して、クエリのさらに下で使用する必要があります。これを理解するために何時間もグーグルしてきましたが、うまくいくようには見えません。これがオープニングビットです(これは失敗しているようです):

DECLARE @point1ID;
INSERT INTO points SET
pointName = "$pointName1",
street = "$street1",
town = "$town1",
city = "$city1",
zip = "XXX",
country = "$country1",
pointDescription = "$pointDescription1";
SELECT @point1ID = scope_identity();

挿入したばかりの行のIDが変数@point1IDに入れられ、後で同じTRANSACTION/COMMITブロックで使用できるようになることを期待していました。私はここで何が間違っているのですか?

ありがとう!

4

2 に答える 2

0

I MySQLコンソールでは、最後に挿入されたAUTO_INCREMENTIDに次のコマンドでアクセスできます。

SELECT LAST_INSERT_ID();

この情報を将来使用するために変数に格納する場合は、次のようにします。

SET @lastid = LAST_INSERT_ID();

すでに述べたように、これはAUTO_INCREMENT列を持つテーブルに対してのみ機能します。また、この値はサーバー側でこの接続に対してのみ維持されます。AUTO_INCREMENT列を特定の非特殊値に設定した場合、この値は更新されません。

于 2012-06-29T01:58:28.323 に答える
0

PHPでクエリを使用している場合、INSERTを実行してから使用します

$insert_id = mysql_insert_id();

自動インクリメントされた ID を取得します。

于 2012-06-29T01:34:26.970 に答える