我目前正在修改 Firebird v. 1.5 数据库。
数据库结构将被修改从使用 interbase 组件的 delphi 应用程序运行查询,我面临的问题是我需要运行很多查询,其中一些包括创建生成器和更新生成器值,问题是我需要在尽可能少的查询中实现这一点,但似乎(至少对我而言)这实际上是不可能的,我想要做的是以下几点:
/* 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 是一种解决方法,但事实并非如此。