|
Помогите разобраться чем грозит RETURN NULL;
|
|||
---|---|---|---|
#18+
Приветствую. Помогите разобраться чем грозит RETURN NULL в триггерной функции. Мне надо запретить изменения в таблице, вставку, изменение и удаления (RULE не предлагать). обычно смотрю используется RETURN OLD; или RETURN NEW; но с удалением возникли проблемы, сделал RETURN NULL; Триггерная функция одна на вставку, изменение и удаления. Протестировал - все работает, т.е. запрещает изменения в табличке. Скажите. чем RETURN NULL; может грозить? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2021, 11:53 |
|
Помогите разобраться чем грозит RETURN NULL;
|
|||
---|---|---|---|
#18+
sstatistic, raise exception обычно делается. А return null делает то что описано в документации: https://www.postgresql.org/docs/current/plpgsql-trigger.html Row-level triggers fired BEFORE can return null to signal the trigger manager to skip the rest of the operation for this row (i.e., subsequent triggers are not fired, and the INSERT/UPDATE/DELETE does not occur for this row). ... The return value of a row-level trigger fired AFTER or a statement-level trigger fired BEFORE or AFTER is always ignored ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2021, 12:02 |
|
Помогите разобраться чем грозит RETURN NULL;
|
|||
---|---|---|---|
#18+
sstatistic Приветствую. Помогите разобраться чем грозит RETURN NULL в триггерной функции. Мне надо запретить изменения в таблице, вставку, изменение и удаления (RULE не предлагать). А не проще на уровне прав доступа к таблице всё это сделать? -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2021, 12:40 |
|
Помогите разобраться чем грозит RETURN NULL;
|
|||
---|---|---|---|
#18+
Melkij sstatistic, raise exception обычно делается. А return null делает то что описано в документации: https://www.postgresql.org/docs/current/plpgsql-trigger.html Row-level triggers fired BEFORE can return null to signal the trigger manager to skip the rest of the operation for this row (i.e., subsequent triggers are not fired, and the INSERT/UPDATE/DELETE does not occur for this row). ... The return value of a row-level trigger fired AFTER or a statement-level trigger fired BEFORE or AFTER is always ignored Спасибо. Получается конкретно для этого случая, NULL подходит. А оказалось кроме олд и нью еще куча всего есть, TG_TABLE_NAME, например. Благодарю за ссылочку. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2021, 14:55 |
|
Помогите разобраться чем грозит RETURN NULL;
|
|||
---|---|---|---|
#18+
Maxim Boguk sstatistic Приветствую. Помогите разобраться чем грозит RETURN NULL в триггерной функции. Мне надо запретить изменения в таблице, вставку, изменение и удаления (RULE не предлагать). А не проще на уровне прав доступа к таблице всё это сделать? Это было бы сильно просто. Там просто логика завязана, что-то можно, что-то нельзя, в одной таблице, поэтому просто правами досутпа тут не получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2021, 14:56 |
|
Помогите разобраться чем грозит RETURN NULL;
|
|||
---|---|---|---|
#18+
sstatistic Maxim Boguk пропущено... А не проще на уровне прав доступа к таблице всё это сделать? Это было бы сильно просто. Там просто логика завязана, что-то можно, что-то нельзя, в одной таблице, поэтому просто правами досутпа тут не получится. return null или raise exception зависит от того какое поведение вам требуется внутри транзакции если выполняется запрещенная операция... тупо пропустить запрещенную операцию и продолжить транзакцию - return null; если же надо дать ошибку и откатить всю транзакцию - тогда raise exception -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2021, 15:26 |
|
Помогите разобраться чем грозит RETURN NULL;
|
|||
---|---|---|---|
#18+
Maxim Boguk sstatistic пропущено... Это было бы сильно просто. Там просто логика завязана, что-то можно, что-то нельзя, в одной таблице, поэтому просто правами досутпа тут не получится. return null или raise exception зависит от того какое поведение вам требуется внутри транзакции если выполняется запрещенная операция... тупо пропустить запрещенную операцию и продолжить транзакцию - return null; если же надо дать ошибку и откатить всю транзакцию - тогда raise exception -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru Вас понял. Да, должно быть полностью незаметно ни для приложения ни для пользователя. null то что надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2021, 17:09 |
|
Помогите разобраться чем грозит RETURN NULL;
|
|||
---|---|---|---|
#18+
sstatistic должно быть полностью незаметно ни для приложения ни для пользователя. Часовую бомбу закладываете на случай увольнения или свинью для поддержки, которую задолбают вопросами "почему мои данные не сохранились"?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2021, 14:20 |
|
|
start [/forum/topic.php?fid=53&fpage=11&tid=1994001]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 307ms |
total: | 444ms |
0 / 0 |