實施列型別
SQLite 使用動態型別並忽略宣告的列型別:
> CREATE TABLE Test (
Col1 INTEGER,
Col2 VARCHAR(2), -- length is ignored, too
Col3 BLOB,
Col4, -- no type required
Col5 FLUFFY BUNNIES -- use whatever you want
);
> INSERT INTO Test VALUES (1, 1, 1, 1, 1);
> INSERT INTO Test VALUES ('xxx', 'xxx', 'xxx', 'xxx', 'xxx');
> SELECT * FROM Test;
1 1 1 1 1
xxx xxx xxx xxx xxx
(但是,宣告的列型別用於型別關聯 。)
要強制執行型別,你必須使用 typeof()
函式新增約束 :
CREATE TABLE Tab (
Col1 TEXT CHECK (typeof(Col1) = 'text' AND length(Col1) <= 10),
[...]
);
(如果這樣的列應該是 NULLable,則必須明確允許'null'
。)