Aub*_*bin 2 sql oracle oracle10g ora-00907
我需要你的帮助来解决这个错误:
检查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
);
Run Code Online (Sandbox Code Playgroud)
错误消息是
ORA-00907: missing right parenthesis
Run Code Online (Sandbox Code Playgroud)
它几乎总是指向语法错误而不是缺少括号.在这种情况下,解析器反对列定义中元素的顺序.具体来说,DEFAULT子句必须位于CONSTRAINT子句之前,该子句包含NULL/NOT NULL声明.所以试试吧
USR_TITRE CHAR(6) DEFAULT 'M.'CHECK (USR_TITRE IN ('M.' , 'Mlle.','Mme.' )) NULL
Run Code Online (Sandbox Code Playgroud)
顺便说一下,你会遇到这个约束的问题.CHAR数据类型始终填充到声明的长度.因此,如果你输入'M.' 在列中它将填充到'M. ',哪个值将导致约束抛出异常.我建议你改用VARCHAR2(6).
CHAR声明几乎总是一个错误,只是一个等待发生的错误.