Как установить значение в имени столбца переменной? В некотором контексте я пишу функцию, которая будет использоваться в качестве триггера, который устанавливает столбец переменной в постоянное значение. Для того, чтобы использовать следующим образом:Как установить значение в имени столбца переменной?
CREATE TRIGGER always_6_trigger
BEFORE INSERT
ON table
FOR EACH ROW
EXECUTE PROCEDURE always_6('col1');
выше приведет следующих строк, имеющих все col1
значение 6. Так, например:
INSERT INTO table (col1, col2) VALUES (6, 2), (null, 9), (null, 10), (7, 2);
приведет ли:
| col1 | col2 |
---------------
| 6 | 2 |
| 6 | 9 |
| 6 | 10 |
| 6 | 2 |
Или если используется следующий пусковой механизм:
CREATE TRIGGER always_6_trigger
BEFORE INSERT
ON table
FOR EACH ROW
EXECUTE PROCEDURE always_6('col2');
И та же вставка:
INSERT INTO table (col1, col2) VALUES (6, 2), (null, 9), (null, 10), (7, 2);
таблица будет выглядеть следующим образом:
| col1 | col2 |
---------------
| 6 | 6 |
| null | 6 |
| null | 6 |
| 7 | 6 |
Как бы написать функцию always_6
?
Редактировать: Чтобы лучше объяснить случай использования, постоянным значением будет current_setting('user_id')
(или что-то подобное). И название столбца будет таким, как author_id
и user_id
. Мысль о том, что пользователь никогда не может добавить данные, которые не были их собственными.
Можете ли вы привести пример или две из различных реализаций того, как вы будете использовать это и ожидаемый результат? – Hambone
Хорошо, приведем примеры. Это хорошо или вам нужно больше? – Calebmer
Да, это замечательная деталь. Написание функции always_6 кажется выполнимым, но я не понимаю, как вы контролируете, какой триггер используется. Вы уже это разработали? Будет ли только один триггер, который будет существовать в любой момент? – Hambone