16

SELECT を使用して同じ SQL で auto-id 値を取得する最良の方法は何ですか?

フォーラムによると、この " ; has Return Scope_Identity()"
を SQL の最後に追加すると、ASP で機能します。

PHPに対応する方法はありますか?

4

7 に答える 7

16

データベースサーバーによって異なります。MySQL を使用しmysql_insert_id()て、挿入クエリの直後に呼び出します。PostgreSQL を使用して、最初select nextval(seq)にシーケンスに対して " " をクエリし、挿入クエリにキーを含めます。

select max(id) + 1 from tbl別のリクエストがレコードを同時に挿入すると、「 」のクエリが失敗する可能性があります。

于 2009-03-07T05:38:58.230 に答える
7

postgres では、次のようなことを行うのが最善の方法です。

insert into foos(name) values ('my_foo') returning id;
于 2009-09-20T22:04:50.527 に答える
2

Microsoft Transact SQL では、@@IDENTITY を使用できます。

例えば

DECLARE @Table TABLE ( col0 INT IDENTITY, col1 VARCHAR(255), col2 VARCHAR(255))

INSERT INTO @Table (col1, col2) VALUES ('Hello','World!')

SELECT @@Identity

SELECT * FROM @Table
于 2009-07-10T13:47:46.113 に答える
0

非常に注意してください:どうやら select nextval(seq) は高い同時実行性では機能しません - 挿入した時間と select nextval(seq) を呼び出した時間の間に他の接続が挿入される可能性があります。このようなコードは、常に同時実行性の高いテスト ハーネスでテストしてください。

于 2009-07-10T13:44:55.353 に答える
0

SQL Server では、select ステートメントを使用した挿入に、ID 値と、どの ID がどのレコードに移動するかを識別するために必要なその他の列を返す出力句を含めることができます。値句を使用している場合は、挿入の直後に select scope_identity () を使用します。

于 2009-07-10T13:51:44.517 に答える
0

PHP の場合: mysql_insert_id() http://us3.php.net/mysql_insert_id

また

mySql select クエリから数値を生成したい場合は、次の 編集を使用できます。

SELECT LAST_INSERT_ID(`1`) + 1 FROM table 
于 2009-03-07T05:32:52.597 に答える