Tiberio, Sylvain <sylvain.tibe...@eads.com> wrote:
> So I would like to write something like that:
> CASE WHEN
>  EXISTS( SELECT @max=suid_max, @min=roomIdMin FROM range
>            WHERE 200 BETWEEN roomIdMin AND roomIdMax
>              AND 400 BETWEEN roomIdMin AND roomIdMax)
> THEN
>  DELETE FROM range WHERE roomidm...@min AND roomidm...@max;
>  INSERT INTO range VALUES (1, @min, 199  );
>  INSERT INTO range VALUES (1, 301 , @max );
> END

Things like this are best done in your application code, rather than a trigger. 
SQLite in particular has a limited trigger language, nowhere near 
Turing-complete (the way Transact-SQL or PL/SQL are).

However, if you absolutely insist, you can do something like this:

insert into range
select 1, roomIdMin, 199 from range
WHERE 200 BETWEEN roomIdMin AND roomIdMax
    AND 400 BETWEEN roomIdMin AND roomIdMax;


insert into range
select 1, 301, roomIdMax from range
WHERE 200 BETWEEN roomIdMin AND roomIdMax
    AND 400 BETWEEN roomIdMin AND roomIdMax;

delete from range where rowid =
(select rowid from range
 WHERE 200 BETWEEN roomIdMin AND roomIdMax
    AND 400 BETWEEN roomIdMin AND roomIdMax);

Note that if the condition doesn't hold (there is no row encompassing both 200 
and 400), all three statements are simply no-ops.

Igor Tandetnik

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to