39.6. Правила и статус команд#

39.6. Правила и статус команд

39.6. Правила и статус команд

Сервер Tantor SE возвращает строку статуса команды, такую как INSERT 149592 1, для каждой полученной команды. Это достаточно просто, когда нет правил, но что происходит, когда запрос переписывается с помощью правил?

Правила влияют на статус команды следующим образом:

  • Если для запроса нет безусловного правила INSTEAD, то будет выполнен исходный запрос, и его статус команды будет возвращен как обычно. (Но обратите внимание, что если были какие-либо условные правила INSTEAD, то отрицание их квалификаций будет добавлено к исходному запросу. Это может сократить количество обрабатываемых строк, и в таком случае статус будет изменен).

  • Если есть безусловное правило INSTEAD для запроса, то исходный запрос вообще не будет выполнен. В этом случае сервер вернет статус команды для последнего запроса, который был вставлен с помощью правила INSTEAD (условного или безусловного) и имеет тот же тип команды (INSERT, UPDATE или DELETE) что и исходный запрос. Если ни один запрос, удовлетворяющий этим требованиям, не был добавлен ни одним правилом, то возвращаемый статус команды показывает тип исходного запроса и нули для полей row-count и OID.

Программист может гарантировать, что любое желаемое правило INSTEAD будет устанавливать статус команды во втором случае, давая ему алфавитно последнее имя среди активных правил, чтобы оно применялось последним.