我需要将一个新的Firebird生成器/序列初始化为现有“旧”表的最大主键值。我尝试了以下但它不工作,我得到错误“令牌未知 - 第6行,第8列选择”。我不能手动执行此操作,因为它必须在许多不同的DB上执行。我正在使用Firebird 2.5.1。如何设置初始发生器值?
根据http://www.firebirdsql.org/file/documentation/reference_manuals/reference_material/html/langrefupd25-execblock.html这应该工作 - 我做错了什么?
set term #;
execute block
as
declare i int = 0;
begin
i = select max(ID) from OrganizationType_OLU;
alter sequence OrganizationType_OLU restart with :i;
end
#
set term ;#
谢谢你,这让我走向了正确的方向。完全正常工作的SQL如下所示:set term#; 执行块 as declare i int = 0; declare g int = 0; begin i =(从OrganizationType_OLU中选择max(ID)); g =(从RDB $ DATABASE)选择gen_id(OrganizationType_OLU, - (gen_id(OrganizationType_OLU,0)))); g =(从RDB $ DATABASE)选择gen_id(OrganizationType_OLU,(从OrganizationType_OLU中选择max(ID))); 结束 # 设定项;# –