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

时间:2010-07-07 13:53:59

标签: database triggers sqlite

我正在寻找一种方法来获得一个查看Timestamp字段的触发器,如果​​它找到匹配的自动增量,则将该记录插入另一列。所以我会有一个时间戳字段和一个版本字段。如果插入的记录的时间戳与表中已有的记录匹配,则自动增加版本字段。任何想法......

2 个答案:

答案 0 :(得分:1)

假设您的版本列为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开始编号。

答案 1 :(得分:0)

我投了安东尼威廉姆斯,但经过一些测试我发现它不能正常工作。

我做了一些阅读,实际上,您可以通过向您的ID添加INTEGER PRIMARY KEY来创建SQLite内部ROWID的别名,或者只使用ROWID而不用添加自己的字段。

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