Sql 为什么甲骨文认为我';我缺少一个右括号?
在Oracle 10i中,我运行以下命令:Sql 为什么甲骨文认为我';我缺少一个右括号?,sql,oracle,ora-00907,Sql,Oracle,Ora 00907,在Oracle 10i中,我运行以下命令: ALTER TABLE jnrvwchnglst ADD ( jnrvwchnglst_userid NUMBER(10) NOT NULL DEFAULT 1 ) Yesjnrvwchnglst是现有表,nojnrvwchnglst\u userid不是现有列 Oracle错误消息为: ORA-00907: missing right parenthesis 这个查询有什么问题?为什么Oracle认为我缺少括号?我以前遇到过这个问题,您
ALTER TABLE jnrvwchnglst ADD
( jnrvwchnglst_userid NUMBER(10) NOT NULL DEFAULT 1 )
Yesjnrvwchnglst
是现有表,nojnrvwchnglst\u userid
不是现有列
Oracle错误消息为:
ORA-00907: missing right parenthesis
这个查询有什么问题?为什么Oracle认为我缺少括号?我以前遇到过这个问题,您不能在同一语句中添加列和设置默认/约束。“缺少右括号”是一种误导。Oracle喜欢在与括号无关的情况下使用该错误(我猜他们的解析逻辑应该是00907)
ALTER TABLE jnrvwchnglst ADD
( jnrvwchnglst_userid NUMBER(10) DEFAULT 1 NOT NULL )
试一试
“(NOT)NULL”在语法上必须是“ALTER”中的最后一条语句,所以当Oracle看到这一点时——并且下一个字符(您的“默认”stmt)不是预期的终止权”)抛出了错误。这不是我的事,而是您用这样的名称在表中究竟保留了什么?初级大众汽车更改列表?:)@Quassnoi-ORM系统从标记中删除元音,因为Oracle的最大字符数(不合理)为30个字符。所以这实际上是“JoinReviewChangelist.”该死的=)或者它可能只是一个操作顺序问题。bah=)这是真的,比如时间戳。然而,Quassnoi的代码确实有效。谢谢希望这能更多地解释为什么你会出错,以帮助解决其他类似的情况。
ALTER TABLE jnrvwchnglst ADD ( nrvwchnglst_userid NUMBER(10) );
ALTER TABLE jnrvwchnglst ALTER ( nrvwchnglst_userid SET DEFAULT 1 );
UPDATE jnrvwchnglst SET nrvwchnglst_userid = 1 WHERE nrvwchnglst_userid IS NULL;
ALTER TABLE jnrvwchnglst ALTER ( nrvwchnglst_userid SET NOT NULL );