DB_common::nextId()
DB_common::nextId() – シーケンスの次の値を返す
Synopsis
integer nextId (
string $seq_name
,
boolean $onDemand
= = true
)
Description
シーケンスから、次に使用可能な値を返します。このメソッドが
コールされるたびにシーケンスは自動的に加算されます。
詳細な説明は、"導入 -
シーケンス" を参照ください。
Parameter
-
string
$seq_name
-
シーケンスの名前。
データベースの違いによる問題を避けるため、シーケンス名の
最初には英字のみを使用するようにし、またそれ以降も
英数字とアンダースコア文字のみを使用するようにしましょう。
-
boolean
$onDemand
-
TRUE を設定すると、指定したシーケンスが存在しない場合には
自動的に作成されます。
この機能を使用するには、スクリプトで指定したデータベースユーザが
テーブルやシーケンスを作成する権限を持っている必要があります。
必要な検眼は、使用している DBMS に依存します。
Return value
integer - 使用可能な ID 番号、あるいは
失敗した場合に DB_Error オブジェクトを返します。
Throws
Possible PEAR_Error values
エラーコード |
エラーメッセージ |
原因 |
対応法 |
DB_ERROR_NOT_CAPABLE |
DB backend not capable
|
この機能は、データベースバックエンドではサポートされていません。
|
もしほんとうにこの機能が必要であれば、
別のデータベースシステムを使用しましょう。
|
DB_ERROR_NOT_LOCKED |
not locked
|
シーケンステーブルが見つけられません。
|
データベース固有のエラーです。使用しているデータベースの
ドキュメントを参照ください。
|
DB_ERROR_NOSUCHTABLE |
no such table
|
シーケンステーブルが見つかりませんでした。
|
新しいシーケンスを作成してください。もしシーケンスが存在することが
確かなのであれば、データベースの状態を確認してみましょう。
|
Note
This function can not be called
statically.
PEAR DB のシーケンスメソッドを使用する場合には、シーケンスの作成も
含めたすべての処理にこれらのメソッドを用いることを強く推奨します。
DBMS で直接作成したシーケンスに対して PEAR DB のメソッドで
アクセスすることは避けてください。完全な情報は、
"導入 - シーケンス" のページの警告を参照ください。
Example
<?php
// $db という名前の DB オブジェクトが作成済みであると仮定します...
$id = $db->nextId('mySequence');
if (PEAR::isError($id)) {
die($id->getMessage());
}
// INSERT クエリで ID を使用します
$res =& $db->query("INSERT INTO myTable (id, text) VALUES ($id, 'foo')");
?>