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