【发布时间】:2017-03-16 20:35:35
【问题描述】:
我对数据库不太感兴趣,并且我遇到了以下问题,这些问题与字段可以具有的一组值有关。我正在使用 MySql。
我有这个 DDL 表定义:
CREATE TABLE actors (
id BigInt(20) UNSIGNED NOT NULL AUTO_INCREMENT,
sample_id VarChar(128) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`role` Char(2) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
wiews VarChar(16) CHARACTER SET latin1 COLLATE latin1_swedish_ci,
pid VarChar(16) CHARACTER SET latin1 COLLATE latin1_swedish_ci,
`name` VarChar(128) CHARACTER SET latin1 COLLATE latin1_swedish_ci,
address VarChar(128) CHARACTER SET latin1 COLLATE latin1_swedish_ci,
country Char(3) CHARACTER SET latin1 COLLATE latin1_swedish_ci,
PRIMARY KEY (
id
)
) ENGINE=InnoDB AUTO_INCREMENT=1 ROW_FORMAT=COMPACT DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
ALTER TABLE actors COMMENT = '';
ALTER TABLE actors ADD CONSTRAINT fk_actors_pgrfas FOREIGN KEY (sample_id)
REFERENCES pgrfas (sample_id)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
我无法更改这些字段的类型,因为它们已被应用程序使用。
有人向我提供了一个规范,说明 role 字段(必须是 Char(2))只能采用此集合中的值:IN('pr','co','br').
如何在前面的 DDL 语句中指定该字段只能具有这 3 个值之一?
【问题讨论】:
标签: mysql sql database rdbms ddl