2015-12-11 2 views
0

Запрос: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.
- Если столбец был предназначен для корреляции ссылки, квалифицируйте столбец с правильным указателем таблицы.
- Если столбец предназначен для глобальной переменной, квалифицируйте имя с помощью схемы, где существует глобальная переменная, или убедитесь, что схема находится в пути.

Справочные сайты:

ответ

3

пожалуйста попробуйте т он «длинное имя», а не «короткое имя», поскольку я могу повторно позвонить, он ссылается на длинное имя (COLUMN_NAME) в таблице SYSCOLUMNS.

Привет Роланд

+0

Позор, Позор невыносимо. –

+0

@ ZS6JCE, не чувствую себя плохо. Странно, что триггер SQL требует использования длинного имени. Полагаю, это имеет смысл. Внутри триггера вы не имеете дело со столом. Вы имеете дело с буфером данных. Система генерирует только одно имя для элементов. – Charles