需要创建域以将表中的值限制为特定值,并不断出错

时间:2019-07-15 19:16:13

标签: mysql sql linux

我正在尝试创建一个表,该表在特定列中具有特定值的值。

CREATE TABLE employee2 (
    ID numeric(5, 0),
    F_name varchar(20) NOT NULL,
    MI char(1),
    L_name varchar(20) NOT NULL,
    Add_street varchar(35) NOT NULL,
    Add_city varchar(25) NOT NULL,
    Add_state char(2) NOT NULL,
    Add_zip numeric (5, 0),
    Title varchar(20),
    Type varchar(18)
    );

我需要“类型”列仅允许3个内容“ python”,“ javascript”,“ html”。

我尝试创建域:

CREATE DOMAIN ee_type varchar(18) CONSTRAINT type_constraint CHECK (Type='python', 'javascript', 'html'));

我仍然收到此错误:

mysql> ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DOMAIN ee_type varchar(18) CHECK (Type='python'))' at line 1

任何帮助都会很棒,谢谢!

2 个答案:

答案 0 :(得分:2)

MySQL当前不支持域。您可以找到有关here的更多信息。

相反,您可以像这样使用enum吗?

CREATE TABLE employee2 (
    ID numeric(5, 0),
    F_name varchar(20) NOT NULL,
    MI char(1),
    L_name varchar(20) NOT NULL,
    Add_street varchar(35) NOT NULL,
    Add_city varchar(25) NOT NULL,
    Add_state char(2) NOT NULL,
    Add_zip numeric (5, 0),
    Title varchar(20),
    Type ENUM('python', 'javascript', 'html')
);

答案 1 :(得分:0)

意识到我使用了错误的语言后,我能够使用以下格式来解析Postgresql:

CREATE DOMAIN ee_type varchar(18) CHECK (VALUE IN('software developer', 'administration', 'support staff'));

CREATE TABLE employee3 (
    ID numeric(5, 0),
    F_name varchar(20) NOT NULL,
    MI char(1),
    L_name varchar(20) NOT NULL,
    Add_street varchar(35) NOT NULL,
    Add_city varchar(25) NOT NULL,
    Add_state char(2) NOT NULL,
    Add_zip numeric(5, 0),
    Title varchar(20),
    Type ee_type
    );