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

Database SQLite触发器在一列不唯一时自动递增另一列,database,triggers,sqlite,Database,Triggers,Sqlite,我正在寻找一种方法,使触发器可以查看时间戳字段,如果找到匹配项,则自动递增插入到另一列的记录。所以我有一个时间戳字段和一个版本字段。如果插入的记录的时间戳与表中已有的记录相匹配,则自动递增版本字段。任何想法……假设您的版本列为ver,时间戳列为ts CREATE TRIGGER foo AFTER INSERT ON sometable BEGIN UPDATE sometable SET ver=(SELECT MAX(ver)+1 FROM sometable WHE

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

假设您的版本列为
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;

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

我投票支持Anthony Williams,但经过一些测试,我发现它不正确

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

关于这方面的更多信息:

嗨,我对sqlite的触发器操作感到非常困惑。我不知道如何使用它。我已经创建了一个触发器语句。并将其放入数据库文件的onCreate()中。并且在更新中加入一个,但是我在代码中做什么呢。如何触发我的触发代码。它将如何击中那里。是否需要执行其他操作。如果创建触发器,则当相应事件发生时,它将自动运行。如果您还有其他问题,我建议您打开一个新的StackOverflow问题以获得完整的答案。我已经发布了两个问题,但不幸的是,我没有得到任何答复。此触发器似乎无法解释ver列中的空值