SQL错误:ORA-00907:尝试创建表时缺少右括号

时间:2016-11-17 20:26:45

标签: sql oracle

这是我试图针对Oracle数据库执行的查询,该数据库显然没有缺少括号。

CREATE TABLE P_DOG(
DOG_ID CHAR(5) NOT NULL,
DOG_NAME VARCHAR2(30) NOT NULL DEFAULT 'UNKNOWN',
DOG_BIRTHDAY_MONTH NUMBER(2) NULL CHECK(DOG_BIRTH_MONTH>=1 AND DOG_BIRTH_MONTH<=12),
DOG_BIRTHDAY_YEAR NUMBER(4) NOT NULL CHECK(DOG_BIRTH_YEAR>=1980 AND DOG_BIRTH_YEAR<= 2030),
SEX CHAR(1) NOT NULL,
SPAYED_OR_NEUTERED CHAR(1) NOT NULL DEFAULT 'N',
CONSTRAINT DOG_PK PRIMARY KEY(DOG_ID),
);

1 个答案:

答案 0 :(得分:1)

除了Mat在注释中指出的最后一个逗号外,NOT NULL应该出现在默认值之后 - 并且检查约束应该具有正确的列名:列名有BIRTHDAY但条件使用BIRTH,更改列名称或条件中的内容,以便它们匹配。

特别是“缺少右括号”错误是由NOT NULL后的DEFAULT引起的。错误的订单。