如何写sqlite的trigger

如何写sqlite的trigger,第1张

概述近日在做sqlite的数据库。 写一个触发器。碰到问题了, 根据sqlite的文档。引用当前行的代码是 new.columnname, 可我的如何写都报错,郁闷,将脚本贴在这儿,希望有哪位高人指点一下。 create table atv ( modid int, chno int , jmno int , moddate date , primary key (modid) ); create t 近日在做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. 总结

以上是内存溢出为你收集整理的如何写sqlite的trigger全部内容,希望文章能够帮你解决如何写sqlite的trigger所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1178409.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存