Sqlite rowid >太多级别的触发器递归,但触发器工作正常?



我有一个表:MYTABLE(ID int);

我使用这个查询在mytable:中生成N个rowid

  create trigger mytrigger after insert on MYTABLE
  when new.id < 1000 
  begin
  insert into MYTABLE select max(id)+1 from MYTABLE;
  end;
  insert into MYTABLE values (1);

它工作得很好,sqlite会为我生成一个从1到1000的rowid。

但当我退役时:

when new.id < 1000 

具有较大的数字,如:

when new.id < 10000000

我收到一个错误:触发递归的级别太多

现在我的问题是,如果一个触发器不能处理至少一百万个选项,它有什么意义?有什么方法可以解决这个问题吗?或者我应该自己插入每一行:)

触发器并不意味着具有任意级别的递归。

任意递归的机制是递归公共表表达式:

INSERT INTO MyTable(id)
WITH RECURSIVE n(i) AS (
    SELECT 1
    UNION ALL
    SELECT i + 1 FROM n WHERE i < 1000
)
SELECT i FROM n;

相关内容

  • 没有找到相关文章

最新更新