una que primary ora modificar identidad foreign developer desea columna campo autoincremental auto_increment 12c 11g oracle

que - oracle ya



Agregue una clave primaria de incremento automático a la tabla existente en Oracle (4)

Esta pregunta ya tiene una respuesta aquí:

Quiero agregar una nueva columna primaria de incremento automático a una tabla existente que tenga datos. ¿Cómo puedo hacer eso?

Primero agregué una columna y luego intenté agregar una secuencia después de eso, perdí la forma de insertar y hacer esa columna como clave principal.


Atrapado en los foros de Oracle OTN

Use la tabla alter para agregar una columna, por ejemplo:

alter table tableName add(columnName NUMBER);

Luego crea una secuencia:

CREATE SEQUENCE SEQ_ID START WITH 1 INCREMENT BY 1 MAXVALUE 99999999 MINVALUE 1 NOCYCLE;

y, la update uso para insertar valores en una columna como esta

UPDATE tableName SET columnName = seq_test_id.NEXTVAL


Puede usar Oracle Data Modeler para crear claves de sustitución automáticas.

Paso 1. - Crea un diagrama relacional

Primero puede crear un Diagrama Lógico e Ingeniero para crear el Diagrama Relacional o puede crear el Diagrama Relacional inmediatamente.

Agregue la entidad (tabla) que requiere tener PK auto incrementado, seleccione el tipo de PK como entero.

Paso 2. - Editar propiedad de columna PK

Obtenga las propiedades de la columna PK. Puede hacer doble clic en el nombre de la columna o hacer clic en el botón ''Propiedades''.

Aparece el cuadro de diálogo Propiedades de columna.

Seleccione la pestaña General (Selección predeterminada por primera vez). Luego seleccione las casillas de verificación ''Aumento automático'' y ''Columna de identidad''.

Paso 3. - Información adicional

Se puede especificar información adicional relacionada con el incremento automático seleccionando la pestaña ''Aumento automático''.

  • Empezar con
  • Incrementar por
  • Valor mínimo
  • Valor máximo
  • Ciclo
  • Deshabilitar caché
  • Orden
  • Nombre de la secuencia
  • Nombre del disparador
  • Generar disparador

Por lo general, es una buena idea mencionar el nombre de la secuencia, de modo que sea útil en PL / SQL.

Haga clic en Aceptar (Aplicar) al cuadro de diálogo Propiedades de columna.

Haga clic en Aceptar (Aplicar) al cuadro de diálogo Propiedades de la tabla.

La tabla aparece en el diagrama relacional.


Si tiene la columna y la secuencia, primero debe llenar una nueva clave para todas las filas existentes. Suponiendo que no le importa qué tecla se asigna a qué fila

UPDATE table_name SET new_pk_column = sequence_name.nextval;

Una vez hecho esto, puede crear la restricción de clave primaria (esto supone que no existe una restricción de clave primaria o que ya ha descartado la restricción de clave primaria existente)

ALTER TABLE table_name ADD CONSTRAINT pk_table_name PRIMARY KEY( new_pk_column )

Si desea generar la clave automáticamente, deberá agregar un disparador

CREATE TRIGGER trigger_name BEFORE INSERT ON table_name FOR EACH ROW BEGIN :new.new_pk_column := sequence_name.nextval; END;

Si está en una versión anterior de Oracle, la sintaxis es un poco más engorrosa

CREATE TRIGGER trigger_name BEFORE INSERT ON table_name FOR EACH ROW BEGIN SELECT sequence_name.nextval INTO :new.new_pk_column FROM dual; END;


Supongamos que su tabla se llama t1 y su clave principal se llama id
Primero, crea la secuencia:

create sequence t1_seq start with 1 increment by 1 nomaxvalue;

Luego crea un disparador que se incrementa al insertar:

create trigger t1_trigger before insert on t1 for each row begin select t1_seq.nextval into :new.id from dual; end;