首页 > 解决方案 > 由于 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

我在互联网上查找错误并认为我应该指定默认值。出于这个原因,我修改了添加这部分的脚本:

"GENDER" ENUM('M','F')DEFAULT 'M' ,

不幸的是,它对我没有多大帮助,因为它表明我和以前一样的错误。有谁知道我错在哪里?或者我可以改变什么?

任何形式的帮助表示赞赏!^^

标签: sqldatabaseenumsdb2

解决方案


我不认为 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'))
);

笔记:

  1. 我删除了双引号。只是不要将它们用作标识符。它们只会使查询变得混乱并引入奇怪错误的可能性。
  2. 我认为这样的表应该有一个主键,虽然我没有添加一个。
  3. 名称字符串的长度似乎过短。

推荐阅读