代码之家  ›  专栏  ›  技术社区  ›  user290687

SQLite触发器在一列不唯一时自动递增另一列

  •  0
  • user290687  · 技术社区  · 14 年前

    我正在寻找一种方法,使触发器可以查看时间戳字段,如果找到匹配项,则自动递增插入另一列的记录。所以我会有一个时间戳字段和一个版本字段。如果插入的记录的时间戳与表中已有的记录相匹配,则自动递增版本字段。有什么想法吗。。。。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Anthony Williams    14 年前

    假设你的版本栏是 ver 你的时间戳列是 ts

    CREATE TRIGGER foo AFTER INSERT ON sometable
    BEGIN
        UPDATE sometable SET
            ver=(SELECT MAX(ver)+1 FROM sometable WHERE ts=NEW.ts)
        WHERE rowid=NEW.rowid;
    END;
    

    如果指定的默认值为0 版本 列,则条目将从1开始编号。

        2
  •  0
  •   RoboTamer    13 年前

    我投票支持安东尼·威廉姆斯,但经过一些测试,我发现它不起作用。

    我做了更多的阅读,实际上,您可以通过向id添加INTEGER主键来创建SQLite内部ROWID的别名,或者只使用ROWID,而不必添加自己的字段。

    更多信息: http://www.sqlite.org/autoinc.html

    推荐文章