可以使用默認空字符串指定表列的能力和方式看起來與RDBMS實現相關。在HSQLDB中爲列指定默認空字符串的正確方法?
此答案(default a column with empty string)和這一個(Avoid NULL columns using DEFAULT Empty String)表明可以使用帶有DEFAULT約束的空單引號字面值的CREATE TABLE列規則設置默認空字符串。
這是我在HSQLDB 2.2.9中使用的DDL摘錄。我執行SQL對數據庫鼠籠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,
);
lastName的可能不是NULL
midName沒有列規則
的firstName不能爲空,並試圖把它通過指定前面的答案建議的空字符串文字來默認爲空字符串。
當我使用松鼠使這個表格編輯,然後插入一行到表中,下面的值出現在列:
lastName: (empty)
midName: <null>
firstName: ''
看來,語義DEFAULT「」在HSQLDB事業NOT NULL該列默認爲兩個單引號而不是空字符串。當沒有DEFAULT規則的情況下單獨使用列規則NOT NULL時,看起來好像插入新行時由SQuirreL報告了一個空字符串。
有人可以證實,爲了在HSQLDB默認爲一個非空的,空的,零長度字符串VARCHAR列的正確方法是使用這些語義:
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,
);
感謝:-)
那好像是一隻松鼠蟲。也許Squirrel試圖變得聰明,並檢索默認表達式並將其發送到數據庫以查找您不需要編輯的列。這對我的SQL客戶端來說工作正常。你能看到Squirrel發送到數據庫的聲明嗎?如果你不編輯它,那麼聲明不應該包含'firstName'列(或者它的值應該使用'DEFAULT'關鍵字來發送) –