Здравствуйте!
У меня есть таблица
CREATE TABLE mytable ( text varchar(40), n integer, blok integer, sost BOOLEAN, id SERIAL PRIMARY KEY );
Я выбираю из этой таблицы, например, первые 10 записей (1 страница)
SELECT * FROM mytable WHERE sost=true ORDER BY blok, n DESC LIMIT 0, 10;
, отображаю их на странице, потом на этой странице удаляю методом ajax какую-нибудь запись, отправляется запрос PHP скрипту, тот удаляет его из базы. Дальше этот PHP скрипт должен вернуть запись, которая вставится в конец списка, т.е. 11 запись, которая после удаления стала 10. Для этого мне надо перед удалением записи определить, на какой позиции находится удаляемая запись по запросу
SELECT * FROM mytable WHERE sost=true ORDER BY blok, n DESC
, если известен только ее id, на MYSQL это будет так:
SET @recNo:=0; SELECT n FROM ( SELECT @recNo:=@recNo+1 n, id FROM mytable WHERE sost=true ORDER BY blok, n DESC) s WHERE id=deleted_id;
Как узнать номер записи в Postgres по запросу, если известен id этой записи и "WHERE sost=true ORDER BY blok, n DESC
"?
Вы не забыли, что работаете с
Вы не забыли, что работаете с МНОГОПОЛЬЗОВАТЕЛЬСКИМ окружением?
Совсем не факт. что во время вашего удаления, другие пользователи не вставят или не удалят какие-либо данные.
Таким образом. единственным надёжным средством идентификации записи является первичный ключ строки в таблице.
На мой взгляд, то что вы написали рассчитано исключительно на то, что весь процесс выполняется эксклюзивно одним пользователем.