Firebird PHP自动增量生成器

Firebird PHP自动增量生成器,php,generator,firebird,Php,Generator,Firebird,我有一个密钥ID,它将是Firebird数据库的一个自动递增的唯一ID,我有一个Firebird制作的生成器,已经可以很好地工作了,我想在db中为新记录写入ID。所以基本上我想用这个递增生成器得到正确的值,但我不知道如何调用。产品是发电机 $q = ibase_query("SELECT * FROM PRODUCT_SORSZAM"); echo $q; 可以使用以下命令获取下一个生成器值: SELECT GEN_ID(PRODUCT_SORSZAM,1) FROM RDB$DATABASE

我有一个密钥ID,它将是Firebird数据库的一个自动递增的唯一ID,我有一个Firebird制作的生成器,已经可以很好地工作了,我想在db中为新记录写入ID。所以基本上我想用这个递增生成器得到正确的值,但我不知道如何调用。产品是发电机

$q = ibase_query("SELECT * FROM PRODUCT_SORSZAM");
echo $q;

可以使用以下命令获取下一个生成器值:

SELECT GEN_ID(PRODUCT_SORSZAM,1) FROM RDB$DATABASE; Or 
SELECT NEXT VALUE FOR PRODUCT_SORSZAM FROM RDB$DATABASE;

我假设PRODUCT_SORSZAM是生成器的名称,而不是表的名称。

我这样做的方法是使用触发器填充“target”表上的ID字段,然后在插入查询中使用return,如下所示:

触发器(假设TNAME是带有target ID字段的表,TNAME\u GEN\u ID是生成器):

然后插入查询将类似于:

INSERT INTO TNAME (FIELD_1, FIELD_2, ...) VALUES (VALUE_1, VALUE_2, ...)
RETURNING ID
这仅适用于Firebird 2.0(带有“值”),或者,如果要使用单例选择作为插入的值源,则适用于Firebird 2.1。 文件:

希望这有帮助

CREATE TABLE test
(
field1 integer not null,
field2 char(10),
PRIMARY KEY (field1)
);

CREATE GENERATOR gen_test_id;
inserting values:

INSERT INTO test (field1, field2) VALUES (gen_id(gen_test_id, 1), 'testme');

只是想一想:)

你为什么重复别人的答案?
CREATE TABLE test
(
field1 integer not null,
field2 char(10),
PRIMARY KEY (field1)
);

CREATE GENERATOR gen_test_id;
inserting values:

INSERT INTO test (field1, field2) VALUES (gen_id(gen_test_id, 1), 'testme');
CREATE TABLE test ( field1 integer not null, field2 char(10), PRIMARY KEY (field1) );

CREATE GENERATOR gen_test_id; inserting values:

INSERT INTO test (field1, field2) VALUES (gen_id(gen_test_id, 1), 'testme');