Использование значения по умолчанию для нулевого ввода в Sybase - PullRequest
1 голос
/ 13 июня 2011

Доброе утро,

У меня есть вопрос, касающийся значений по умолчанию и значений NULL в Sybase ASE 12. Короче говоря: я унаследовал очень старую базу данных Sybase, а также внешний интерфейс PowerBuilder, которыйсидит на вершине этого.Одна из рассматриваемых таблиц содержит несколько столбцов, которые имеют значения по умолчанию, а также ненулевое ограничение.Таким образом, всякий раз, когда значение не указывается (примечание: не значение NULL), PowerBuilder создает соответствующий оператор вставки / обновления и просто не передает значение для этих пустых полей, которым база данных автоматически присваивает значение по умолчанию.Gravy.

Теперь проблема: было решено добавить аудит для всего приложения через интерфейс (я знаю, что это плохая идея, но не мой выбор).Была написана функция для абстрагирования процесса аудита, но проблема возникает из-за того, что она не видит записи пользователя как значения NULL и генерирует оператор вставки в таблицу аудита (также определенный с ограничением not null), предоставляя литерал NULLдля этих пустых столбцов.Затем Sybase видит литерал NULL и, как вы все знаете, обрабатывает NULL как значение, а не как «отсутствие записи».

Итак, вопрос: возможно ли по умолчанию запись NULL для значений по умолчанию изсторона базы данных?Я рассмотрел триггеры, но я надеюсь, что мне повезет, и будет какая-то форма конструкции на уровне таблицы, которую я смогу использовать.

Спасибо за ваше время и внимание.

Ссылки:
Хороший пример рассматриваемой проблемы
http://www.sybaseteam.com/null-not-nothing-difference-between-null-nothing-sybase-t-390.html

См. Таблицу 7-1, наполовину вниз по странице.
http://manuals.sybase.com/onlinebooks/group-as/asg1250e/sqlug/@ebt-link;pt=20741?target=%25N%15_19279_START_RESTART_N%25

1 Ответ

1 голос
/ 14 июня 2011

Я думаю, вам нужно сделать свою функцию аудита более умной. Следует регистрировать только те столбцы, которые изменил пользователь. Это легко определить с помощью getitemstatus. Вы можете проходить по столбцам, используя форму getitemstatus, которая принимает целочисленный номер столбца.

...