TransWikia.com

Error creando un Identity en Oracle

Stack Overflow en español Asked by Cutu on December 14, 2021

Que tal gente, espero que me puedan ayudar a resolver este problema aunque sea algo tonto, estoy intentando crear una tabla con un ID del tipo Identity y estoy obteniendo el siguiente error:

Error que empieza en la línea: 1 del comando :
CREATE TABLE USUARIO (
userID NUMBER GENERATED ALWAYS AS IDENTITY (START WITH 100 INCREMENT BY 1),
username VARCHAR2(32) NOT NULL,
pass VARCHAR2(32) NOT NULL,
nickname VARCHAR2(32) NOT NULL,
email VARCHAR2(32) NOT NULL,
userType CHAR(5) CONSTRAINT CH_userType CHECK(userType IN ('comun', 'boss')),
CONSTRAINT PK_usuario
  PRIMARY KEY (userID)
);
Informe de error -
ORA-02000: missing ( keyword
02000. 00000 -  "missing %s keyword"

Al parecer me falta un “(” pero no logro ver en donde, todo parece estar en orden, espero que puedan ayudarme, gracias de antemano.

One Answer

El error se debe a la versión de Oracle que usas. La habilidad de definir una columna como un IDENTITY es nuevo con la versión 12.

En las versiones anteriores, lo mejor que puedes hacer para aproximar la funcionalidad es definir un SEQUENCE que usas para asignar a la columna por medio de un trigger.

Aquí te dejo un ejemplo:

create sequence usuario_seq START WITH 100 INCREMENT BY 1;
/

CREATE TABLE USUARIO (
userID NUMBER,
username VARCHAR2(32) NOT NULL,
pass VARCHAR2(32) NOT NULL,
nickname VARCHAR2(32) NOT NULL,
email VARCHAR2(32) NOT NULL,
userType CHAR(5) CONSTRAINT CH_userType CHECK(userType IN ('comun', 'boss')),
CONSTRAINT PK_usuario
  PRIMARY KEY (userID)
);
/

create trigger usuario_trigger
before insert on usuario
for each row
begin
  :new.userID := usuario_seq.nextval;
end;
/

Referencias:

Answered by sstan on December 14, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP