近日在做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' 都不能正确執行。
求高人指點。
測試一夜,解決了。
after insert on atv
update atv set moddate = date('now') where chno = new.chno ;
可是我還有問題, 如何讓用觸發器使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 .後。就不再報錯了。
before insert on atv for each row
it worked.