sqlite - 如何在 SQLite 中创建 ENUM 类型?

标签 sqlite types enums

我需要将一个表从 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 列限制为值 MRH,只是 像 enum("M", "R", "H") 会在其他一些 SQL 引擎中做。

关于sqlite - 如何在 SQLite 中创建 ENUM 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5299267/

相关文章:

C++ 类方法包含对静态变量的 undefined reference

android - 在 Android 中保存动态生成的 UI(是否使用 Sqlite?)

android - 无法在 Android 上创建 SQLite 表

javascript - 按下后退按钮时将正确的信息传递给上一个 Activity

c# - 分配给委托(delegate)的通用方法

c# - 反射 - 带参数调用构造函数

c# - 为枚举分配(非)常量值

sql - 当我的来源是维恩图时,如何设计数据库表?

python - 在 Python 中指定 input() 类型?

scala - 如何从 Scala 中的特征访问类型成员