38.6. Правила и статус команд#
38.6. Правила и статус команд #
Сервер Tantor BE возвращает строку статуса команды, такую как INSERT 149592 1
, для каждой полученной команды. Это достаточно просто, когда нет правил, но что происходит, когда запрос переписывается с помощью правил?
Правила влияют на статус команды следующим образом:
Если для запроса нет безусловного правила
INSTEAD
, то будет выполнен исходный запрос, и его статус команды будет возвращен как обычно. (Но обратите внимание, что если были какие-либо условные правилаINSTEAD
, то отрицание их квалификаций будет добавлено к исходному запросу. Это может сократить количество обрабатываемых строк, и в таком случае статус будет изменен).Если есть безусловное правило
INSTEAD
для запроса, то исходный запрос вообще не будет выполнен. В этом случае сервер вернет статус команды для последнего запроса, который был вставлен с помощью правилаINSTEAD
(условного или безусловного) и имеет тот же тип команды (INSERT
,UPDATE
илиDELETE
) что и исходный запрос. Если ни один запрос, удовлетворяющий этим требованиям, не был добавлен ни одним правилом, то возвращаемый статус команды показывает тип исходного запроса и нули для полей row-count и OID.
Программист может гарантировать, что любое желаемое правило INSTEAD
будет устанавливать статус команды во втором случае, давая ему алфавитно последнее имя среди активных правил, чтобы оно применялось последним.