Запрос:DB2 для I - CREATE TRIGGER - SQL0206 - столбец или глобальная переменная не найдена
Пожалуйста, объясните, почему CREATE заявление TRIGGER бросает
SQL0206 - Колонка или глобальной переменной PACKED_FLD не найден
Пример кода:
CREATE TABLE TST_TABLE (
CHAR_FLD_ALIAS FOR COLUMN CHAR_FLD CHAR(9) CCSID 37 NOT NULL DEFAULT '',
PACKED_FLD_ALIAS FOR COLUMN PACKED_FLD DECIMAL(9, 0) NOT NULL DEFAULT 0,
ZONED_FLD_ALIAS FOR COLUMN ZONED_FLD NUMERIC(9, 0) NOT NULL DEFAULT 0 ,
DATE_FLD_ALIAS FOR COLUMN DATE_FLD DATE NOT NULL DEFAULT CURRENT_DATE,
TIME_FLD_ALIAS FOR COLUMN TIME_FLD TIME NOT NULL DEFAULT CURRENT_TIME,
TSTAMP_FLD_ALIAS FOR COLUMN TSTAMP_FLD TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY(CHAR_FLD_ALIAS))
CREATE TRIGGER TST_TRGPGM_LONG_NAME
NO CASCADE
BEFORE INSERT ON TST_TABLE
REFERENCING OLD AS o NEW AS n
FOR EACH ROW MODE DB2ROW
PROGRAM NAME TST_TRGPGM
BEGIN
SET n.PACKED_FLD = 999;
END
Полное сообщение об ошибке:
ID сообщения. , , , , , : SQL0206 Уровень важности. , , , , , , : 30 Тип сообщения. , , , , : Диагностика
Сообщение. , , , : Столбец или глобальная переменная PACKED_FLD не найдены.
Причина. , , , , : PACKED_FLD не был найден как столбец таблицы * N в * N и не был найден как глобальная переменная в * N. Если таблица * N, PACKED_FLD не является столбцом любой таблицы или представления, на которые можно ссылаться.Восстановление. , , : Выполните одно из следующих действий и повторите запрос:
- Убедитесь, что имена столбцов и таблиц указаны правильно в инструкции.
- Если это инструкция SELECT, убедитесь, что все необходимые таблицы были указаны в предложении FROM.
- Если столбец был предназначен для корреляции ссылки, квалифицируйте столбец с правильным указателем таблицы.
- Если столбец предназначен для глобальной переменной, квалифицируйте имя с помощью схемы, где существует глобальная переменная, или убедитесь, что схема находится в пути.
Справочные сайты:
- TechTip: More-Flexible SQL Triggers
- Multiple event triggers support on IBM DB2 for i
- IBM Redbook: Stored Procedures, Triggers, and User-Defined Functions on DB2 Universal Database for iSeries
- IBM Knowledge Center: CREATE TRIGGER
Позор, Позор невыносимо. –
@ ZS6JCE, не чувствую себя плохо. Странно, что триггер SQL требует использования длинного имени. Полагаю, это имеет смысл. Внутри триггера вы не имеете дело со столом. Вы имеете дело с буфером данных. Система генерирует только одно имя для элементов. – Charles