EXAMPLE:
You need to know the generator´s value after INSERT:
Before INSERT-Statement run
$nextnumber=ibase_gen_id ("GEN_NAME",1);
GEN_NAME: is the generator´s name
1: means add 1 to actual value of generator
$nextnumber: is variable to store generators value after incrementing
In the INSERT-Statement you can use $nextnumber instead of using generator directly like in:
INSERT INTO test (field1, field2) VALUES gen_id(gen_test_id, 1), 'testme');
ibase_gen_id
(PHP 5)
ibase_gen_id — 指定した名前のジェネレータをひとつ加算し、その新しい値を返す
説明
警告
この関数は、 現在のところ詳細な情報はありません。引数のリストのみが 記述されています。
返り値
新しいジェネレータの値を整数で返します。値が大きくなりすぎた場合は文字列で返します。
ibase_gen_id
robert
12-Dec-2006 04:24
12-Dec-2006 04:24
escoric at latinmail dot com
18-Aug-2004 02:00
18-Aug-2004 02:00
$sql="INSERT INTO mitabla(campo1,campo2,..campo n) VALUES(GEN_ID(mitabla1_codigo_gen,1),'contenido 1', 'contenido 2', 'contenido n' )";
mfischer at php dot net
28-Apr-2004 08:54
28-Apr-2004 08:54
Question arose on php-dev:
How does ibase_gen_id() handle 64bit values?
Interbase 6/Firebird generators are always 64-bit signed integers
(Firebird's BIGINT type), regardless of the platform the client is
running.
On 64-bit platforms, this will never require conversion as PHP's int
type is 64 bits wide on those platforms. On 32-bit platforms, the
generated value is converted to a string if it exceeds the limits of a
32-bit signed integer.
(This behaviour is consistent with the ibase_fetch_*() functions, that
will use strings to represent numerical values that cannot be represented
accurately using native PHP numerical types.)
[Edited by PHP/Interbase maintainer.]
