近日在做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.