我需要你的帮助来解决这个错误:
检查CONSTRAINT上的ORA-00907
CREATE TABLE S_NEWS.T_UTILISATEUR_USR (
USR_ID INTEGER NOT NULL PRIMARY KEY,
USR_MAIL VARCHAR(256) NOT NULL,
USR_TITRE CHAR(6) NULL DEFAULT 'M.'CHECK (USR_TITRE IN ('M.' , 'Mlle.','Mme.' )),
USR_NOM CHAR(32) NOT NULL,
USR_PRENOM VARCHAR(32) NULL,
USR_ORGANISATION VARCHAR(128) NULL
);
答案 0 :(得分:5)
错误消息是
ORA-00907: missing right parenthesis
它几乎总是指向语法错误而不是缺少括号。在这种情况下,解析器反对列定义中元素的顺序。具体来说,DEFAULT子句必须位于CONSTRAINT子句之前,该子句包含NULL / NOT NULL声明。所以试试
USR_TITRE CHAR(6) DEFAULT 'M.'CHECK (USR_TITRE IN ('M.' , 'Mlle.','Mme.' )) NULL
顺便说一句,您将遇到该约束的问题。 CHAR数据类型始终填充到声明的长度。因此,如果你输入'M.'在列中它将填充到'M. ',哪个值将导致约束抛出异常。我建议你改用VARCHAR2(6)。
CHAR声明几乎总是一个错误,只是一个等待发生的错误。