在Oracle 10i中,我正在运行以下命令:
ALTER TABLE jnrvwchnglst ADD
( jnrvwchnglst_userid NUMBER(10) NOT NULL DEFAULT 1 )
是jnrvwchnglst
是现有表格,jnrvwchnglst_userid
不是现有列。
Oracle错误消息是:
ORA-00907: missing right parenthesis
这个查询出了什么问题?为什么Oracle认为我缺少一个括号?
答案 0 :(得分:21)
ALTER TABLE jnrvwchnglst ADD
( jnrvwchnglst_userid NUMBER(10) DEFAULT 1 NOT NULL )
答案 1 :(得分:4)
“(NOT)NULL”必须是语法中“ALTER”中的最后一个语句,所以当Oracle看到 - 并且下一个char(你的“DEFAULT”stmt)不是预期的终止权限时) “,扔错了。
答案 2 :(得分:0)
在您无法添加列并在同一语句中设置默认/约束之前,我遇到过此问题。 '缺少右括号'是红鲱鱼。 Oracle喜欢将这个错误用于与括号无关的情况(我的猜测是它们的解析逻辑落到了00907)。
尝试
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 );