如何写sqlite的trigger
发布时间:2020-12-12 23:38:33 所属栏目:百科 来源:网络整理
导读:近日在做sqlite的数据库。 写一个触发器。碰到问题了, 根据sqlite的文档。引用当前行的代码是 new.columnname, 可我的如何写都报错,郁闷,将脚本贴在这儿,希望有哪位高人指点一下。 create table atv ( modid int, chno int, jmno int, moddate date, prim
近日在做sqlite的数据库。
写一个触发器。碰到问题了, 根据sqlite的文档。引用当前行的代码是 new.columnname, 可我的如何写都报错,郁闷,将脚本贴在这儿,希望有哪位高人指点一下。 create table atv ( modid int, chno int, jmno int, moddate date, primary key (modid) ); create trigger update_modify_date before insert on atv BEGIN update atv set new.moddate = date('now') ; END ; 运行后出现: SQL error near line XX,no such column:new.moddate 其中 update atv set new.moddate = date('now') ; 我写成 "new.moddate"还是'new.moddate' 都不能正确执行。 求高人指点。 测试一夜,解决了。 create trigger update_modify_date after insert on atv BEGIN update atv set moddate = date('now') where chno = new.chno ; END ; 可是我还有问题, 如何让用触发器使modid自动增长, 我用了下面的语法, create trigger add_id before insert on atv begin update atv set modid = max(modid) +1 ; end; 运行 sqlite> insert into atv (jmno,chno ) values (767,68); 出现。 SQL error: misuse of aggregate function max() sqlite> 更改中。, 原来是for each row 这句话的问题。指定 for each row .后。就不再报错了。 create trigger update_modify_date before insert on atv for each row BEGIN update atv set new.moddate = date('now') ; END ; it worked. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |