If the reccord you are inserting do not depend on data in the record you want to delete, why not simply use a trigger?

Before insert delete the record with the same key!



Michael Paesold wrote:

Tsirkin Evgeny wrote:



one moer question ,how did you tested it?


I have tested this here. I don't really know if this is just the case

with

Best Regards,
Michael Paesold


First I created the your schedule table. Then I opened two psql sessions...

Session A                Session B

BEGIN;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
DELETE FROM schedule WHERE studentid = 1;
INSERT INTO schedule VALUES (1, 1, 0, 0);

                         BEGIN;
                         SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
                         DELETE FROM schedule WHERE studentid = 1;
                         -- if there existed records for this delete,
                         -- session B will now wait for session A to
                         -- commit/rollback and error out on commit;
                         -- otherwise no error


COMMIT; INSERT INTO schedule VALUES (1, 1, 0, 0); COMMIT;


You can also try and rollback the first transaction etc.

Again, what really helps is:
ALTER TABLE schedule ADD CONSTRAINT uniq_schedule UNIQUE (studentid,
groupid);

Best Regards,
Michael Paesold


---------------------------(end of broadcast)--------------------------- TIP 3: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to [EMAIL PROTECTED] so that your message can get through to the mailing list cleanly


---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to