You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将生成器Dest的值设置为生成器Src的实际值?

解决Firebird序列(生成器)同步值的问题

错误原因

你执行的ALTER SEQUENCE Dest RESTART WITH GEN_ID(Src, 0);报错,是因为Firebird的ALTER SEQUENCE语句中,RESTART WITH子句只接受常量值,不允许直接调用GEN_ID()这类函数作为参数,解析器无法识别函数调用,因此抛出SQLCODE -104的语法错误。

正确实现方法

方法1:分步手动执行

先查询出生成器Src的当前值,再用该值重启Dest:

  1. 获取Src的当前值:
SELECT GEN_ID(Src, 0) FROM RDB$DATABASE;
  1. 用上一步得到的数值(假设为N)执行重启语句:
ALTER SEQUENCE Dest RESTART WITH N;

方法2:用执行块(EXECUTE BLOCK)自动完成

如果需要一次性自动完成,可以用Firebird的执行块来动态获取值并执行修改,无需手动复制数值:

EXECUTE BLOCK
AS
    DECLARE current_val BIGINT;
BEGIN
    -- 获取Src的当前值
    current_val = GEN_ID(Src, 0);
    -- 动态构造并执行ALTER语句
    EXECUTE STATEMENT 'ALTER SEQUENCE Dest RESTART WITH ' || current_val;
END

内容的提问来源于stack exchange,提问作者TomCat500

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 01:00:01