Tom Lane wrote:
>
> Okay, I've extracted a reproducible test case from Warren's info:
>
> Setup:
>
> CREATE TABLE sis_user (
> sis_user_id INTEGER PRIMARY KEY,
> last_visit DATETIME NOT NULL DEFAULT TEXT 'now');
>
> CREATE TABLE session (
> session_key CHAR(40) PRIMARY KEY,
> sis_user_id INTEGER NOT NULL REFERENCES sis_user(sis_user_id),
> last_access_time DATETIME NOT NULL DEFAULT TEXT 'now');
>
> CREATE RULE session_del AS ON DELETE TO session DO
> UPDATE sis_user SET last_visit = OLD.last_access_time
> WHERE OLD.sis_user_id = sis_user.sis_user_id;
>
> insert into sis_user values(1);
>
> In session 1, do:
>
> insert into session values('zzz', 1);
> begin;
> delete from session where session_key = 'zzz';
>
> In session 2, do:
>
> delete from session where session_key = 'zzz';
>
> Back to session 1:
>
> end;
Thanks for your quick fix as usual.
BTW I have a question about this example.
Session 2 deletes no row because *session 1* already
deleted the rows but the session_del rule seems to
be invoked. Is it a right behavior ?
regards,
Hiroshi Inoue