Ok, I've removed that nested DELETE command. Now I have still the problem that I can't delete tablenames with multiple field entries. The full sql I have is as follows: --- create table dbapp_tablenames ( tablenameID integer primary key, tablename text not null unique on conflict ignore ); create table dbapp_tablefields ( tablenameID integer not null, tablefield text not null );
insert into dbapp_tablenames (tablename) values ('employees'); insert into dbapp_tablenames (tablename) values ('offices'); insert into dbapp_tablefields (tablenameID,tablefield) select tablenameID,'administration' from dbapp_tablenames where tablename='offices'; insert into dbapp_tablefields (tablenameID,tablefield) select tablenameID,'name' from dbapp_tablenames where tablename='employees'; insert into dbapp_tablefields (tablenameID,tablefield) select tablenameID,'surname' from dbapp_tablenames where tablename='employees'; create view dbapp as select tablename,group_concat(tablefield) as fields from dbapp_tablefields as fs join dbapp_tablenames as ts on (ts.tablenameID=fs.tablenameID) group by ts.tablenameID; create trigger dbapp_insert instead of insert on dbapp begin select raise(rollback, 'field already in table') where ( select tablefield from dbapp_tablefields f join dbapp_tablenames t on (f.tablenameID=t.tablenameID) where tablefield=new.fields and t.tablename=new.tablename) is not null; insert into dbapp_tablenames (tablename) values (new.tablename); insert into dbapp_tablefields (tablenameID, tablefield) select tablenameID,new.fields from dbapp_tablenames where tablename=new.tablename; end; create trigger dbapp_delete instead of delete on dbapp begin delete from dbapp_tablefields where tablefield=old.fields; /* HERE */ /* where tablenameID=( select tablenameID from dbapp_tablenames where tablename=old.tablename) and tablefield=old.fields; */ --where tablefield=old.fields; delete from dbapp_tablenames where tablename=old.tablename and not exists ( select * from dbapp_tablefields f where f.tablenameID = dbapp_tablenames.tablenameID and tablefield=old.fields); end; --- So consider the following output of this database: --- sqlite> select * from dbapp; employees|name,surname offices|administration sqlite> delete from dbapp where tablename='offices' and fields='administration'; sqlite> select * from dbapp; employees|name,surname sqlite> delete from dbapp where tablename='employees' and fields='surname'; sqlite> delete from dbapp where tablename='employees' and fields='surname'; sqlite> delete from dbapp where tablename='employees' and fields='surname'; sqlite> select * from dbapp; employees|name,surname --- I don't get a clue how to find the error? Or is that indeed a Sqlite bug? Thanks for answering... Greetings, Fabiano _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users