2009-04-01 86 views
10

En 10i de Oracle, estoy ejecutando el siguiente comando:¿Por qué Oracle piensa que me falta un paréntesis correcto?

ALTER TABLE jnrvwchnglst ADD 
    (jnrvwchnglst_userid NUMBER(10) NOT NULL DEFAULT 1) 

jnrvwchnglst es una tabla existente y sin jnrvwchnglst_userid no es una columna existente.

El mensaje de error de Oracle es:

ORA-00907: missing right parenthesis 

¿Qué hay de malo en esta consulta y por qué piensan de Oracle que me falta un paréntesis?

+0

No es mi problema, pero ¿qué diablos guardas en la mesa con ese nombre? ¿Lista de cambios Junior Volkswagens? :) – Quassnoi

+1

@Quassnoi - El sistema ORM elimina las vocales de los tokens porque Oracle tiene su (irracional) máximo de 30 caracteres. Así que realmente eso es "JoinReviewChangelist". –

Respuesta

19
ALTER TABLE jnrvwchnglst ADD 
    (jnrvwchnglst_userid NUMBER(10) DEFAULT 1 NOT NULL) 
+0

Gracias! He confirmado que esto funciona –

0

He tenido este problema antes donde no se puede agregar una columna Y establecer el valor predeterminado/restricciones en la misma instrucción. El "paréntesis correcto que falta" es un problema. A Oracle le encanta usar ese error para casos que no están relacionados con paréntesis (supongo que su lógica de análisis cae en 00907).

Trate

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); 
+1

Darn it =) O podría ser solo un problema de orden de operaciones. bah =) – JasonRShaver

+0

Eso es cierto con p. TIMESTAMP. Sin embargo, el código de Quassnoi funciona. ¡Gracias! –

2

"(NO) NULO" debe ser la última declaración en el "ALTER" sintácticamente cuando está presente, por lo que cuando Oracle vio que - y que la próxima char (su prop "DEFAULT") no era el derecho de terminación esperado ")", arrojó el error.

+0

Esperemos que esto explique más ¿POR QUÉ obtuvo el error? Para ayudar a resolver otros escenarios similares. – user1172173

Cuestiones relacionadas