SELECT を使用して同じ SQL で auto-id 値を取得する最良の方法は何ですか?
フォーラムによると、この " ; has Return Scope_Identity()
"
を SQL の最後に追加すると、ASP で機能します。
PHPに対応する方法はありますか?
SELECT を使用して同じ SQL で auto-id 値を取得する最良の方法は何ですか?
フォーラムによると、この " ; has Return Scope_Identity()
"
を SQL の最後に追加すると、ASP で機能します。
PHPに対応する方法はありますか?
データベースサーバーによって異なります。MySQL を使用しmysql_insert_id()
て、挿入クエリの直後に呼び出します。PostgreSQL を使用して、最初select nextval(seq)
にシーケンスに対して " " をクエリし、挿入クエリにキーを含めます。
select max(id) + 1 from tbl
別のリクエストがレコードを同時に挿入すると、「 」のクエリが失敗する可能性があります。
postgres では、次のようなことを行うのが最善の方法です。
insert into foos(name) values ('my_foo') returning id;
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
非常に注意してください:どうやら select nextval(seq) は高い同時実行性では機能しません - 挿入した時間と select nextval(seq) を呼び出した時間の間に他の接続が挿入される可能性があります。このようなコードは、常に同時実行性の高いテスト ハーネスでテストしてください。
SQL Server では、select ステートメントを使用した挿入に、ID 値と、どの ID がどのレコードに移動するかを識別するために必要なその他の列を返す出力句を含めることができます。値句を使用している場合は、挿入の直後に select scope_identity () を使用します。
PHP の場合: mysql_insert_id() http://us3.php.net/mysql_insert_id
また
mySql select クエリから数値を生成したい場合は、次の 編集を使用できます。
SELECT LAST_INSERT_ID(`1`) + 1 FROM table