Re: duplicates
От | Jean-Luc Lachance |
---|---|
Тема | Re: duplicates |
Дата | |
Msg-id | 413C75E5.7090406@sympatico.ca обсуждение исходный текст |
Ответ на | Re: duplicates ("Michael Paesold" <mpaesold@gmx.at>) |
Список | pgsql-admin |
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 majordomo@postgresql.org so that your > message can get through to the mailing list cleanly >
В списке pgsql-admin по дате отправления: