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