When you execute this SQL: "delete from v_items where item='me'", SQLite essentially does:
FOR EACH ROW IN "select <row> FROM v_items where item='me'" { Execute trigger program } --- Mark de Vries <[EMAIL PROTECTED]> wrote: > Hi, > > I guess my question is: are conditions in the where clause > of a instead of delte trigger ignored if the referenced > columns are not in the where clause of the orig delete? > > But perhaps an example of my 'problem': > > create table item ( > id integer primary key, > name text, > catid integer > ); > > create table category ( > id integer primary key, > name text > ); > > create view v_items as > select i.name as item,c.name as cat > from item i,category c > where i.catid=c.id; > > insert into category values (1,'good'); > insert into category values (2,'bad'); > insert into item values (1,'me',1); > insert into item values (2,'you',1); > insert into item values (3,'the rest',2); > > Now I want to be able to delete using the view so I > > create trigger del_v_items instead of delete on v_items > begin > delete from item > where name=old.item and > catid=(select catid from category where name=old.cat); > end; > > Now I can "delete from v_items where item='me'" or "delete from v_items > where cat='good'". Both seem to work as I would like it to, but I don't > quite understand why. In both cases I don't specify a value for a column > that is used in the where clause inside the trigger. Assuming and using > 'NULL' would not work, so what does sqlite do? Just ignore those parts of > the where clause that it does not have all the values for? > > Thnx for your time & Regards, > Mark. > > __________________________________ Yahoo! Mail - PC Magazine Editors' Choice 2005 http://mail.yahoo.com