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