下面定义的触发器在sqlite3中不起作用。
CREATE TRIGGER 'delete_expired' BEFORE INSERT ON 'visitor' BEGIN DELETE FROM visitor WHERE 'create_at' <= date('now', '-6 day'); END
但是,这确实......条件可能有问题。任何人都可以指出我吗?提前致谢
CREATE TRIGGER 'delete_expired' BEFORE INSERT ON 'visitor' BEGIN DELETE FROM visitor; END
答案 0 :(得分:1)
如果需要引用表名和列名,请使用双引号,而不是单引号。
CREATE TRIGGER 'delete_expired'
BEFORE INSERT ON visitor
BEGIN DELETE FROM visitor WHERE create_at <= date('now', '-6 day');
END;
单引号通常表示文字字符串。
sqlite> select 'create_at' from visitor;
create_at
在互动环节中。 。
sqlite> create table visitor (create_at timestamp);
sqlite> CREATE TRIGGER 'delete_expired'
...> BEFORE INSERT ON visitor
...> BEGIN DELETE FROM visitor WHERE create_at <= date('now', '-6 day');
...> END;
sqlite> insert into visitor values ('2014-01-01');
sqlite> select * from visitor;
2014-01-01
sqlite> insert into visitor values ('2014-11-06');
sqlite> select * from visitor;
2014-11-06