Бар столбец rowid или псевдоним столбца rowid , любой тип значения может быть сохранен в типе столбца. То есть тип столбца не ограничивает / ограничивает данные, которые могут быть сохранены.
Вы должны либо проверять данные программно, либо поочередно использовать ограничение CHECK при определении столбца в CREATE TABLE SQL.
Ограничение CHECK может быть присоединено к определению столбца или указано
в качестве ограничения таблицы. На практике это не имеет значения. Каждый раз
новая строка вставляется в таблицу или обновляется существующая строка,
выражение, связанное с каждым ограничением CHECK, оценивается и приводится
в числовое значение таким же образом, как выражение CAST. Если результат
равен нулю (целочисленное значение 0 или реальное значение 0.0), тогда ограничение
нарушение произошло. Если выражение CHECK оценивается как NULL, или
любое другое ненулевое значение не является нарушением ограничения.
выражение ограничения CHECK не может содержать подзапрос.
SQL как понял SQLite - CREATE TABLE
* +1032 * Пример
Рассмотрим следующий код: -
DROP TABLE IF EXISTS mychecktable ;
CREATE TABLE IF NOT EXISTS mychecktable (mycolumn BLOB CHECK(substr(mycolumn,3,1) = '-'));
INSERT INTO mychecktable VALUES('14-03-1900');
INSERT INTO mychecktable VALUES('1900-03-14'); -- ouch 3rd char not -
Результатом будет: -
DROP TABLE IF EXISTS mychecktable
> OK
> Time: 0.187s
CREATE TABLE IF NOT EXISTS mychecktable (mycolumn BLOB CHECK(substr(mycolumn,3,1) = '-'))
> OK
> Time: 0.084s
INSERT INTO mychecktable VALUES('14-03-1900')
> Affected rows: 1
> Time: 0.206s
INSERT INTO mychecktable VALUES('1900-03-14')
> CHECK constraint failed: mychecktable
> Time: 0s
- т.е. первая вставка успешна, вторая вставка не удалась.