我目前正在修改Firebird 1.5版数据库。更新生成器值问题
数据库结构将被修改从delphi应用程序使用interbase组件运行查询,我面临的问题是我需要运行很多查询,其中一些包括创建生成器和更新生成器值,问题是,我需要在尽可能少的查询尽可能地做到这一点,但它似乎(至少对我来说),这是不是真的有可能,我想要做的是以下几点:
/* this command creates a generator to be used for table TABLENAME */
CREATE GENERATOR GEN_TABLENAME;
所以我创建了一个生成器,现在我需要从表TABLENAME中设置当前最大ID处的值,如下所示:
/* one would expect that the following command would work, well it doesn't */
SET GENERATOR GEN_TABLENAME TO (SELECT MAX(ID) FROM TABLENAME);
现在,有没有这方面的任何解决办法,还是我强迫:
- 创建发电机
- 获得最大的id
- 更新发电机值
和重复每个表的过程?
我还预计,
SELECT
SELECT MAX(ID) AS ID_TABLENAME_1 FROM TABLENAME_1,
...
SELECT MAX(ID) AS ID_TABLENAME_N FROM TABLENAME_N
将是一个解决方法,以获得最大的ID从每一个表中的一个命令,但事实并非如此。
你在使用什么组件? – rstrelba
@rstrelba interbase – ComputerSaysNo
我对delphi组件感兴趣。 TIBDatabase? TIBQuery? TIBDataSet? – rstrelba