2009-08-25 11 views
0

挿入された最後の行(または主キー)を取得する正しい汎用SQL構文は何でしょうか。 IDはシーケンスによって自動生成されるかもしれませんが、シーケンスを一切扱っていません!私はテーブルを照会してIDを取得する必要があります。あるいは、INSERTを拡張してIDを返すこともできます。私は常に1つの行を挿入していると仮定します。ソリューションはほとんどのRDBMSで動作するはずです。挿入された最後の行を取得する汎用SQL構文

+4

この方法のように普遍的な解決策はありません、離れてタイムスタンプ –

+0

を追加することから、私は追加HSQLDB、PostgreSQLのは、SQL Server 2005、Oracleの、MySQLとDB2 –

答えて

2

最良の方法は次のように配列に依存することです:

select Max(ID) from tableName 

しかし、あなたはそれに対処したくない場合は、あなたのテーブルに新しいタイムスタンプ列を追加し、その列から最大を選択することができます。

select Max(TimestampField) from tableName 
+0

での作業溶液で幸せになりたいですタイムスタンプは私の選択肢ではありません。私のアプリはテーブル構造を変更してはいけません。 –

+0

配列の解決策が私のために働いています。あなたのサービスがロールオーバした場合(サイクルオーバー)、Max(ID)が間違った結果をもたらすことに注意する価値があります。私の場合、これは無関係です。ありがとう。 –

+0

分離レベルが、他のトランザクションによって挿入されたIDを表示しないようにする必要があります。そして、max(TimeStampField)は、書き込みが頻繁に行われないようにするため、そのフィールドの解像度内に2つの書き込みが存在しないようにします。 –

関連する問題