Возможность и способ указания столбца таблицы с пустой строкой по умолчанию зависят от реализации СУБД.
Этот ответ (по умолчанию столбец с пустой строкой) и этот (Избегайте столбцов NULL с использованием пустой строки DEFAULT) указывает, что пустая строка по умолчанию может быть задано правилом столбца CREATE TABLE, которое использует пустой литерал в одинарных кавычках с ограничением DEFAULT.
Вот отрывок из DDL, который я использовал в HSQLDB 2.2.9. Я выполняю SQL для базы данных с помощью SQuirreL 3.4.0:
CREATE CACHED TABLE Clients (
cli_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
mRN VARCHAR(24) NOT NULL UNIQUE,
lastName VARCHAR(48) NOT NULL,
midName VARCHAR(24),
firstName VARCHAR(24) DEFAULT '' NOT NULL,
);
фамилия не может быть NULL
midName не имеет правил для столбцов
firstName не имеет значения NULL, и делается попытка сделать его по умолчанию пустой строкой, указав литерал пустой строки, как это было предложено в предыдущих ответах.
Когда я использую SQuirreL, чтобы сделать эту таблицу редактируемой, а затем вставляю строку в таблицу, в столбцах появляются следующие значения:
lastName: (empty)
midName: <null>
firstName: ''
Кажется, что семантика DEFAULT '' NOT NULL в HSQLDB приводит к тому, что столбец по умолчанию использует две одинарные кавычки, а не пустую строку. Когда правило столбца NOT NULL используется отдельно без правила DEFAULT, SQuirreL сообщает о пустой строке при вставке новой строки.
Может ли кто-нибудь подтвердить, что правильный способ иметь столбец VARCHAR в HSQLDB по умолчанию для ненулевой, пустой строки нулевой длины - использовать эту семантику:
CREATE CACHED TABLE Clients (
cli_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
mRN VARCHAR(24) NOT NULL UNIQUE,
lastName VARCHAR(48) NOT NULL,
midName VARCHAR(24) NOT NULL,
firstName VARCHAR(24) NOT NULL,
);
Спасибо :-)
firstName
(или его значение должно быть отправлено с использованием ключевого словаDEFAULT
) - person a_horse_with_no_name   schedule 02.04.2013