sql - 由于 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' ,
不幸的是,它对我没有多大帮助,因为它表明我和以前一样的错误。有谁知道我错在哪里?或者我可以改变什么?
任何形式的帮助表示赞赏!^^
解决方案
我不认为 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'))
);
笔记:
- 我删除了双引号。只是不要将它们用作标识符。它们只会使查询变得混乱并引入奇怪错误的可能性。
- 我认为这样的表应该有一个主键,虽然我没有添加一个。
- 名称字符串的长度似乎过短。
推荐阅读
- z3 - 为什么引入这个存在量词会导致不终止?
- android - Android Studio 如何使 WebView 支持阿拉伯语,即 RTL 文本方向?
- amazon-web-services - AWS 100 TB 静态数据转换 S3
- java - 在带有 CDT 的 eclipse 插件中使用自己的 CodeFormatter
- database - 无法让我的 docker-compose 文件与根的基岩一起使用
- javascript - 获取任意给定数量的包含字符串的数组的交集元素的函数
- android - 将 mix-blend-mode 设置为“正常”以外的任何内容都会在 Android 9 上的 Chrome 中隐藏元素
- java - Crashlytic 不显示确切的代码行和错误
- sql - 对 Access 中的链接表运行 VBA 请求时出现错误 3021
- intellij-idea - 如何在 IDEA 中的项目之间共享数据库设置?