SQLite3触发器不起作用

时间:2014-11-06 02:48:09

标签: sqlite

下面定义的触发器在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

1 个答案:

答案 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