База Знаний: Base. Проверка на NULL-значения в форме

From Wiki
Jump to navigationJump to search



Материал для этой статьи сформулирован на основе обсуждения
в community.i-rs.ru.

В реляционных базах данных (RDBMS) поддерживается контроль целостности данных на уровне описания структуры таблиц (DML). В том числе, можно указать, какие поля не должны содержать неопределённые (NULL) значения[1]. Проверка этих условий осуществляется средствами самой RDBMS и не зависит от способа добавления/изменения данных (через форму, командную строку или файл сценария).


Однако, в ряде случаев, лучше проводить дополнительную проверку на стороне клиента, до отправки запроса к SQL-серверу.[2] [3]


В формах OpenOffice.org у многих элементов управления (текстовые поля, поля форматированного ввода и других) в Свойствах элемента на закладке Данные есть пара свойств:

  • "пустая строка - NULL" да/нет,
  • "требуется ввод данных" да/нет.


Если первое свойство выставлено в значение "да", то активируется второе.


Между DML описанием таблицы и настройками элементов формы OpenOffice.org существует следующая связь[4]:


DML,

NOT NULL

Форма,

"требуется ввод данных"

Результат попытки сохранить NULL значение в БД
не указано любое значение Значение сохраняется.

Настройки формы игнорируются.

указано да Значение не сохраняется. Выводится локализованное предупреждение OpenOffice.org.

Т.е. срабатывает ограничение на стороне клиента.

указано нет Значение не сохраняется. Выводится предупреждение SQL-движка.

Т.е. срабатывает ограничение на стороне сервера.









  1. Не следует путать неопределённое значение (NULL) и такие как пустая строка (""), ЛОЖЬ (FALSE) или ноль (0)
  2. Хотя по умолчанию, данные и формы для доступа к ним хранятся в одном файле odb, всё равно имеет место клиент-серверная архитектура. Запросы, Формы и Отчёты - это клиентская сторона (интерфейс), которая посредством SQL-запросов общается с HSQLDB-сервером. А он уже осуществляет все низкоуровневые операции чтения/записи в двоичные файлы данных.
  3. Проверка на стороне клиента добавляет некоторые возможности, но не заменяет корректное DML-описание таблиц!
  4. Проверено на встроенной HSQLDB


К началу страницы