2012-03-04 13 views
2

私は、クライアントからのサーバーに基づいてデータベースにクエリを送信する学校プロジェクトに忙しかったです。要件の1つは、次に利用可能なデータベースからAutoNumberを取得することです。次の利用可能なオートナンバーを取得する

次の利用可能なSQLクエリを取得するにはどうすればよいでしょうかAutonumber?これは可能ですか?

答えて

1

を使用して、以下のクエリを実行します。 MariaDB(MySQL)には、AUTO_INCREMENTフィールドの最後の値を与えるLAST_INSERT_ID()関数があります。次のオートナンバー型は最後の自動採番1と同じではありません

SELECT NEXT VALUE FOR some_sequence; 

または

SELECT some_sequence.NEXTVAL; 
+0

MSAccessのデータベースについて言及していますが、忘れてしまいました。同様のクエリは引き続き機能しますか? – Arianule

+0

私はM $アクセスを一度も使ったことはありませんが、IDENT_CURRENT( 'table_name') ' - この関数はテーブルに最後に挿入されたレコードの最後のIDを返します... – DejanLekic

1

それがOracleの場合、これはRDBMSの味に依存JDBC

SELECT YOUR_SEQUENCE.NEXTVAL FROM DUAL 
2

:シーケンスをサポート

データベース(例えばアングル)は、あなたのようなもので、次の値を取得することができます。レコードが削除されている場合、次の可能なオートナンバーは最後の番号よりかなり高くなる可能性があります。また、MS Accessで否定的な自動番号を取得することも可能です。 Allen Browneが示すように、ADOXを使用して、次の自動番号であるautonumber列のseedプロパティを取得できます。

1

最高の解決策は、レコードを挿入し、生成されたキーを取得し、次にトランザクションをロールバックすることです。 トランザクションと自動番号をサポートするすべてのデータベースで機能します。

+0

問題は、マルチユーザー環境では、この操作を実行するときと実際にレコードを挿入するときの間に他のユーザーがレコードを挿入しないという保証はありません。 – ChrisPadgham

+0

問題はありません。一意の番号が必要です。 –

+0

問題があります。トランザクションをロールバックします。あなたの番号は今や誰かの財産です。あなたがそれを手に入れても、必要な時にそれが消えてしまう可能性があるので、次の自軍番号を得る方法の価値は実際にはわかりません。 – Fionnuala

関連する問題