【发布时间】:2011-03-12 20:17:09
【问题描述】:
我正在寻找一种方法来让触发器查看时间戳字段,如果找到匹配项,则自动递增插入另一列的记录。所以我会有一个时间戳字段和一个版本字段。如果插入的记录具有与表中已有记录匹配的时间戳,则自动递增版本字段。任何想法......
【问题讨论】:
我正在寻找一种方法来让触发器查看时间戳字段,如果找到匹配项,则自动递增插入另一列的记录。所以我会有一个时间戳字段和一个版本字段。如果插入的记录具有与表中已有记录匹配的时间戳,则自动递增版本字段。任何想法......
【问题讨论】:
假设您的版本列是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,但经过一些测试后,我发现它无法正常工作。
我做了更多阅读,实际上,您可以通过将 INTEGER PRIMARY KEY 添加到您的 id 来创建 SQLite 内部 ROWID 的别名,或者只使用 ROWID 而无需添加您自己的字段。
【讨论】: