我需要将一个表从 MySQL 转换为 SQLite,但我不知道如何转换一个枚举字段,因为我在 SQLite 中找不到 ENUM
类型。
上述字段为下表中的pType
:
CREATE TABLE `prices` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`pName` VARCHAR(100) NOT NULL DEFAULT '',
`pType` ENUM('M','R','H') NOT NULL DEFAULT 'M',
`pField` VARCHAR(50) NULL DEFAULT NULL,
`pFieldExt` VARCHAR(50) NULL DEFAULT NULL,
`cmp_id` INT(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
)
ENGINE=MyISAM
ROW_FORMAT=DEFAULT
我需要一个只有三个值的字段供用户选择,我想在数据库中强制执行此操作,而不仅仅是在我的应用程序中。
最佳答案
SQLite 方法是使用 CHECK constraint .
一些例子:
CREATE TABLE prices (
id INTEGER PRIMARY KEY,
pName TEXT CHECK( LENGTH(pName) <= 100 ) NOT NULL DEFAULT '',
pType TEXT CHECK( pType IN ('M','R','H') ) NOT NULL DEFAULT 'M',
pField TEXT CHECK( LENGTH(pField) <= 50 ) NULL DEFAULT NULL,
pFieldExt TEXT CHECK( LENGTH(pFieldExt) <= 50 ) NULL DEFAULT NULL,
cmp_id INTEGER NOT NULL DEFAULT '0'
)
这会将 pType
列限制为值 M
、R
和 H
,只是
像 enum("M", "R", "H")
会在其他一些 SQL 引擎中做。
关于sqlite - 如何在 SQLite 中创建 ENUM 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5299267/