Модификация нескольких таблиц (одна и та же таблица использовалась в этой функции) внутри функции Postgresql - PullRequest
0 голосов
/ 16 апреля 2019
create or replace function report(IN rows_count numeric DEFAULT 1000,
                                  OUT out_rc_type rc_type)
  RETURNS rc_type 
AS 
DECLARE 
BEGIN   
    PERFORM ddl_exec_pkg.ddl_execute ( 'ALTER TABLE REPORT_UI DROP CONSTRAINT REPORT_ID'); 
    PERFORM ddl_exec_pkg.ddl_execute ( 'ALTER TABLE REPORT_ALL_UI DROP CONSTRAINT REPORT_ID'); 
    INSERT INTO
    REPORT_UI (SELECT * FROM GE_REPORT);     
    PERFORM ddl_exec_pkg.ddl_execute ('ALTER TABLE REPORT_UI ADD  CONSTRAINT REPORT_ID CHECK (1 = 1)'); 
    PERFORM ddl_exec_pkg.ddl_execute ('ALTER TABLE REPORT_ALL_UI ADD CONSTRAINT REPORT_ID CHECK (1 = 1)');   
END;

При запуске приведенного выше кода я получаю сообщение об ошибке ниже:

ОШИБКА: невозможно изменить ALTER TABLE "REPORT_UI"

, так как он используетсяактивные запросы в этом сеансе КОНТЕКСТ:

SQL statement "ALTER TABLE REPORT_UI ADD  
    CONSTRAINT REPORT_ID    CHECK (1 = 1)"
...