В правилах postgres (https://www.postgresql.org/docs/current/static/sql-createrule.html) можно ли использовать переменные? Например, если в правиле яИспользование переменных в правиле postgres
CREATE RULE "_RETURN" AS
ON INSERT TO t1
DO INSTEAD
INSERT INTO t1 (id, a) VALUES (uuid_generate_v4(), new.a)
INSERT INTO t4 (id) VALUES (??????)
Может ли я какой-то образом установить значение uuid_generate_v4()
в первой ВСТАВКЕ как переменные, так что я могу использовать его во втором INSERT? Или есть способ получить идентификатор генерации из первого INSERT, чтобы его можно было использовать во втором?
Также я получаю сообщение об ошибке infinite recursion detected in rules for relation
. Вероятно, потому что правило для таблицы t1, но оно содержит инструкцию для вставки в t1. Как я могу сделать эту работу?
Я думаю, вы могли бы использовать [CTE] (https://www.postgresql.org/docs/9.1/static/queries-with.html), чтобы выбрать значение uuid и ссылку на него во вставке, хотя есть, вероятно, и другие способы. Кроме того, ваша рекурсия, скорее всего, связана с тем, что на каждой вставке в 't1' вы создаете правило, которое выполняет вставку в' t1', снова запускающее правило. – jcern