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