Резюме :в този урок ще научите как да използвате SQLite NOT NULL
ограничение, за да се гарантира, че стойностите в колона не са NULL
.
Въведение в SQLite NOT NULL
ограничение
Когато създавате таблица, можете да посочите дали колона приема NULL
стойности или не. По подразбиране всички колони в таблицата приемат NULL
стойности, освен че изрично използвате NOT NULL
ограничения.
За да дефинирате NOT NULL
ограничение за колона, използвате следния синтаксис:
CREATE TABLE table_name (
...,
column_name type_name NOT NULL,
...
);
Code language: SQL (Structured Query Language) (sql)
За разлика от други ограничения като PRIMARY KEY
и CHECK
, можете да дефинирате само NOT NULL
ограничения на ниво колона, а не на ниво таблица.
Въз основа на SQL стандарта, PRIMARY KEY
винаги трябва да означава NOT NULL
. Въпреки това SQLite позволява NULL
стойности в PRIMARY KEY
колона, с изключение на това, че една колона е INTEGER PRIMARY KEY
колона или таблицата е WITHOUT ROWID
таблицата или колоната се дефинира като NOT NULL
колона.
Това се дължи на грешка в някои ранни версии. Ако тази грешка бъде коригирана, за да съответства на стандарта SQL, тогава може да наруши наследените системи. Поради това беше решено да се разреши NULL
стойности в PRIMARY KEY
колона.
Веднъж NOT NULL
ограничението е прикрепено към колона, всеки опит да се зададе стойността на колоната на NULL
като вмъкване или актуализиране ще доведе до нарушение на ограничението.
SQLite NOT NULL
пример за ограничение
Следващият пример създава нова таблица с име suppliers
:
CREATE TABLE suppliers(
supplier_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
В този пример supplier_id
е PRIMARY KEY
колона на suppliers
маса. Тъй като тази колона е декларирана като INTEGER PRIMARY KEY
, няма да приеме NULL
стойности.
name
колоната също е декларирана с NOT NULL
ограничение, така че ще приема само стойности, различни от NULL.
Следното изявление се опитва да вмъкне NULL
в name
колона на suppliers
таблица:
INSERT INTO suppliers(name)
VALUES(NULL);
Code language: SQL (Structured Query Language) (sql)
Изявлението е неуспешно поради NOT NULL
нарушение на ограничението. Ето съобщението за грешка:
SQL Error [19]: [SQLITE_CONSTRAINT] Abort due to constraint violation (NOT NULL constraint failed: suppliers.name)
Code language: CSS (css)
В този урок научихте как да използвате SQLite NOT NULL
ограничение, за да се гарантира, че стойностите в колона не са NULL.