Вопрос для SAP DBTech JDB C при запуске триггера - PullRequest
0 голосов
/ 24 апреля 2020

Я хотел бы спросить, что это за ошибка и как ее исправить?

SAP DBTech JDB C: [7]: функция не поддерживается: выполнение триггера с переменной перехода равно не поддерживается при записи по кусочкам.

Ситуация:

Чтение из файла размером более 100 КБ. Затем вставьте в базу данных SAP HANA. Вставляемый столбец имеет тип BLOB. В этой таблице есть триггер, который вставит ту же информацию в другую таблицу (для целей отслеживания).

Если без этого триггера он может вставить данные без ошибок.

Я не могу дать Фактический код из-за конфиденциальности. Поэтому я создаю приведенный ниже пример.

Я создаю файл hdbtrigger и компилирую его с помощью модуля базы данных SAP HANA в SAP Web IDE для создания таблицы, триггера и т. Д. c.

TRIGGER "M_IMG_T_T" 
AFTER INSERT OR UPDATE OR DELETE
ON "M_IMG_T"
REFERENCING NEW ROW new_row, OLD ROW old_row
FOR EACH ROW
BEGIN
    DECLARE upd_kbn VARCHAR(1) := 'U';
    IF :new_row."ID_PK" IS NULL THEN
        upd_kbn = 'D';
    ELSEIF :old_row."ID_PK" IS NULL THEN
        upd_kbn = 'I';
    END IF;

    IF :upd_kbn = 'I' OR :upd_kbn = 'U' THEN
        INSERT INTO "M_IMG_T_H" VALUES(
            :new_row."ID_PK",
            :new_row."I_IMG_FILE_DATA"
        );
    ELSE
        INSERT INTO "M_IMG_T_H" VALUES(
            :new_row."ID_PK",
            :new_row."I_IMG_FILE_DATA"
        );
    END IF;
END

Когда я экспортирую каталог таблицы, я получу это. (Я просто копирую часть вставки)

CREATE TRIGGER "M_IMG_T_T_I" AFTER INSERT ON "M_IMG_T" REFERENCING NEW ROW NEW_ROW FOR EACH ROW 
BEGIN
    DECLARE UPD_CLS VARCHAR(2) := 'I';
    INSERT INTO "M_IMG_T_H" (
        "I_ID",
        "I_IMG_FILE_DATA"
    ) VALUES(
        :NEW_ROW."I_ID",
        :NEW_ROW."I_IMG_FILE_DATA"
    );
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...