Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBExpert Новый топик    Ответить
 Автоматическая генерация GRANT для MERGE в процедурах, пакетах, функциях  [new]
Dimbuch®
Member

Откуда: Москва
Сообщений: 109
Добрый день.
Версия IBExpert 2020.10.3.1

При использовании MERGE в процедурах, функциях, пакетах не раздаются гранты на DELETE.
Приходится вручную следить и добавлять, что очень неудобно. Иногда можно забыть.

CREATE TABLE NEW_TABLE1 (
    ID      INTEGER,
    FIELD1  INTEGER
);

CREATE TABLE NEW_TABLE2 (
    ID      INTEGER,
    FIELD1  INTEGER
);

SET TERM ^ ;

CREATE OR ALTER PROCEDURE new_procedure1
AS
BEGIN
  -- При раздаче автогрантов, грант на DELETE не раздаётся
  MERGE INTO new_table1 t
  USING new_table2 s
    ON s.id = t.id
  WHEN MATCHED THEN
    DELETE;


  -- При раздаче автогрантов, грант на UPDATE, INSERT раздаётся нормально
  MERGE INTO new_table1 t
  USING new_table2 s
    ON s.id = t.id
  WHEN MATCHED THEN
    UPDATE SET
      field1 = s.field1
  WHEN NOT MATCHED THEN
    INSERT (id, field1)
    VALUES (s.id, s.field1);

END^

SET TERM ; ^

/* Following GRANT statements are generated automatically */

-- Гранта на DELETE нет
GRANT SELECT,INSERT,UPDATE ON NEW_TABLE1 TO PROCEDURE NEW_PROCEDURE1;
GRANT SELECT ON NEW_TABLE2 TO PROCEDURE NEW_PROCEDURE1;
6 окт 20, 16:45    [22209694]     Ответить | Цитировать Сообщить модератору
 Re: Автоматическая генерация GRANT для MERGE в процедурах, пакетах, функциях  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
Исправил.
7 окт 20, 08:30    [22209912]     Ответить | Цитировать Сообщить модератору
Все форумы / IBExpert Ответить