Как заполнить поле NOT NULL в триггере? - PullRequest
2 голосов
/ 26 июля 2011

Я использую Advantage Database Server 10.

У меня есть таблица с 2 полями:

FieldA String Not Null FieldB String Not Null

Теперь мне нужен триггер, который заполняет fieldB значением FieldA при вставке новой записи.

Я намеревался использовать триггер «перед вставкой» или «вместо вставки» со следующим кодом:

UPDATE test set test2 = ( SELECT test1 FROM __new );

Но с обоими триггерами я получаю ошибку, поле B не может быть нулевым. Итак, как мне заполнить поле с ненулевым ограничением триггером?

1 Ответ

2 голосов
/ 27 июля 2011

Боюсь, что вы не можете.

Проверяется ограничение NOT NULL до запускаются все триггеры!

Вы должны снять ограничениеи убедитесь, что значение не равно нулю в триггерах INSERT и UPDATE, чтобы имитировать желаемое поведение.

Другой обходной путь - установить для значения по умолчанию для поля test2 какое-то фиктивное значение (это можно сделать, используяредактор таблиц или sp_ModifyFieldProperty).

http://devzone.advantagedatabase.com/dz/WebHelp/Advantage10.1/index.html?master_sp_modifyfieldproperty.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...