由于 ENUM,无法使用脚本创建 table
Can't create table with script because of ENUM
我目前正在学校学习一些关于 sql 的基本知识。我们收到了一个练习,其中包括创建一个创建表的脚本。我们有一个模式,我们需要重新创建它。
我遇到了一些问题:
当我 运行 脚本时,它显示此错误:
CREATE TABLE "EMPLOYEE" ( "BIRTH_DATE" DATE , "FIRST_NAME" VARCHAR(14) , "LAST_NAME" VARCHAR(16) , "GENDER" ENUM('M','F') , "HIRE_DATE" DATE ) IN "TS_EMPLOYEE"
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0104N An unexpected token "(" was found following "16) , "GENDER" ENUM".
Expected tokens may include: "DEFAULT". SQLSTATE=42601
我在 Internet 上查找错误,认为我应该指定 DEFAULT。出于这个原因,我修改了添加这部分的脚本:
"GENDER" ENUM('M','F')DEFAULT 'M' ,
不幸的是,它对我帮助不大,因为它提示我犯了和以前一样的错误。
有谁知道我错在哪里?或者我可以改变什么?
感谢任何形式的帮助! ^^
我认为 DB2 不支持枚举。如果您使用的是 DB2,则使用 check
约束:
CREATE TABLE EMPLOYEE (
BIRTH_DATE DATE,
FIRST_NAME VARCHAR(14),
LAST_NAME VARCHAR(16),
GENDER CHAR(1),
HIRE_DATE DATE,
CHECK (GENDER IN ('M', 'F'))
);
备注:
- 我去掉了双引号。只是不要将它们用作标识符。它们只会使查询混乱并引入出现奇怪错误的可能性。
- 我觉得这样的table应该有主键,虽然我没有加主键
- 名称字符串的长度似乎短得不必要。
我目前正在学校学习一些关于 sql 的基本知识。我们收到了一个练习,其中包括创建一个创建表的脚本。我们有一个模式,我们需要重新创建它。
我遇到了一些问题:
当我 运行 脚本时,它显示此错误:
CREATE TABLE "EMPLOYEE" ( "BIRTH_DATE" DATE , "FIRST_NAME" VARCHAR(14) , "LAST_NAME" VARCHAR(16) , "GENDER" ENUM('M','F') , "HIRE_DATE" DATE ) IN "TS_EMPLOYEE"
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0104N An unexpected token "(" was found following "16) , "GENDER" ENUM".
Expected tokens may include: "DEFAULT". SQLSTATE=42601
我在 Internet 上查找错误,认为我应该指定 DEFAULT。出于这个原因,我修改了添加这部分的脚本:
"GENDER" ENUM('M','F')DEFAULT 'M' ,
不幸的是,它对我帮助不大,因为它提示我犯了和以前一样的错误。 有谁知道我错在哪里?或者我可以改变什么?
感谢任何形式的帮助! ^^
我认为 DB2 不支持枚举。如果您使用的是 DB2,则使用 check
约束:
CREATE TABLE EMPLOYEE (
BIRTH_DATE DATE,
FIRST_NAME VARCHAR(14),
LAST_NAME VARCHAR(16),
GENDER CHAR(1),
HIRE_DATE DATE,
CHECK (GENDER IN ('M', 'F'))
);
备注:
- 我去掉了双引号。只是不要将它们用作标识符。它们只会使查询混乱并引入出现奇怪错误的可能性。
- 我觉得这样的table应该有主键,虽然我没有加主键
- 名称字符串的长度似乎短得不必要。