Позиционное удаление записи
Функция
Определение оператора позиционного удаления записи из таблицы.
Спецификация
::=
{имя таблицы |имя представления} [[AS] псевдоним таблицы]
WHERE CURRENT OF {CURSOR | имя курсора} [WAIT | NOWAIT]
[{QUANT | QUANTUM} TIMEOUT время] [WITH PRIORITY приоритет]
Синтаксические правила
-
Допустимые привилегии для
< имени таблицы >
должны включать привилегиюDELETE
. -
< Имя таблицы >
должно быть таблицей, указанной в первой< FROM-спецификации >
текущего< запроса выборки >
. -
Результат
< запроса выборки >
и таблица< имя таблицы >
должны быть обновляемыми.
Общие правила
-
Запрос
< позиционного удаления >
должен подаваться после выполнения (по тому же каналу)< запроса выборки >
, т.е. с помощью этого оператора можно удалить из таблицы ту или иную строку, вошедшую в ответ данного< запроса выборки >
. -
Общая схема выполнения позиционного удаления:
-
открыть курсор;
-
сделать выборку (SELECT-запрос) из таблицы или обновляемого представления;
-
переместиться по выборке в нужную строку (например, в интерактивной программе в ту строку, которую пользователь желает удалить), т.е. установить текущую строку ответа;
-
выполнить конструкцию
< позиционное удаление >
.
-
-
При выполнении
< позиционного удаления >
удаляется строка, являющаяся текущей строкой ответа на выполненный< запрос выборки >
. -
Запрос
< позиционного удаления >
может подаваться после выполнения иерархического< запроса выборки >
. -
Запрос
< позиционного удаления >
выполняется по тому каналу, по которому он был подан (а не по каналу, по которому был подан соответствующий SELECT-запрос). -
Параметр
< время >
задает максимально допустимую продолжительность выполнения запроса (от 1 до 65535 сек.). Если запрос в отведенное для него время не был выполнен, его обработка прекращается с выдачей соответствующего кода завершения. -
Конструкция
WITH PRIORITY < приоритет >
устанавливает заданный приоритет (значение в диапазоне от 0 до 255) выполняемому запросу. Если задать приоритет больше текущего приоритета пользователя, от имени которого подается запрос, то выдается код завершения 1022 («Нарушение привилегий»). -
Конструкция
WITH PRIORITY < приоритет >
назначает приоритет только тому запросу, в котором она указана. На приоритет любых последующих запросов она не влияет. -
Для таблицы, созданной с атрибутом
NODE
,< позиционное удаление >
с локального сервера недоступно. -
Для таблиц «в памяти»
< позиционное удаление >
в режимеOPTIMISTIC
не поддерживается.