Re: SELECT MAX(c) FROM (SELECT ... FOR UPDATE) AS foo
От | Markus Bertheau |
---|---|
Тема | Re: SELECT MAX(c) FROM (SELECT ... FOR UPDATE) AS foo |
Дата | |
Msg-id | 1092752492.2627.23.camel@dicaprio.akademie1.de обсуждение исходный текст |
Ответ на | Re: SELECT MAX(c) FROM (SELECT ... FOR UPDATE) AS foo (Bruno Wolff III <bruno@wolff.to>) |
Ответы |
Re: SELECT MAX(c) FROM (SELECT ... FOR UPDATE) AS foo
Re: SELECT MAX(c) FROM (SELECT ... FOR UPDATE) AS foo |
Список | pgsql-sql |
В Втр, 17.08.2004, в 16:12, Bruno Wolff III пишет: > > SELECT MAX(position) FROM (SELECT position FROM classes WHERE name = > > 'foo' FOR UPDATE OF classes) AS foo > > > > It's clear which rows should be locked here, I think. > > Even if it was allowed, it probably wouldn't be good enough because it won't > protect against newly inserted records. Can you detail an example where this wouldn't be good enough? In a PL/pgSQL function I'm doing PERFORM position FROM class_fields WHERE class = arg_class_name; INSERT INTO class_fields (class, field, position) VALUES (arg_class_name, arg_field_name, (SELECT MAX(position) FROM class_fields WHERE class = arg_class_name)); Is this unsafe? The question initially arose because I wanted to do something similar to SELECT INTO var_new_position MAX(position) FROM class_fields WHERE class = arg_class_name FOR UPDATE OF class_fields; which didn't work. Thanks -- Markus Bertheau <twanger@bluetwanger.de>
В списке pgsql-sql по дате отправления: