Como crear Tablas con Valores Autonuméricos en Oracle

Cuando queremos tener una clave subrogada en Oracle, tenemos una limitación para crear tablas con campos tipo identity o auto incrementadores. Esto esta dado porque así es la Base de Datos, sin embargo esta limitación se puede suplir de manera eficiente y en ocasiones mas flexible con un secuencia. Veamos como debemos construir nuestra tabla, primero supongamos que tenemos una tabla de clientes como la siguiente:

Create Table Clientes (
  IdCliente         Integer Primary Key Not NULL,
  Nombre_Cliente    Varchar2(255),
  Dni_Cliente       Varchar2(20) Not Null,
  Fecha_Nacimiento  Date 
);

La secuencia para incrementar debe ser sobre el campo IDCliente, así debemos crear la secuencia:

CREATE SEQUENCE IncrClientes
  MINVALUE 1
  INCREMENT BY 1
  START WITH 1
  nomaxvalue
;

Para que se autoincremente el campo IdCliente cada vez que insertamos un registro a la tabla, creamos el siguiente trigger:

Create Trigger TriggerClientes
  before insert on BI.Clientes
  for each row
  begin
    Select BI.IncrClientes.nextval into:new.IdCliente from dual;
  end;
/

Con esto tenemos que cada vez que insertamos un registro a la tabla, lo debemos hacer por los campos de la tabla, exceptuando el Idcliente, el cual se auto incrementara con cada nuevo registro, un ejemplo de un insert a esta tabla sería:

Insert Into Clientes
(Nombre_Cliente, Dni_Cliente, Fecha_Nacimiento)
Values
('Pepe Sierra', 'C243435', '1900/10/10');

Con esto tendremos como resultado lo siguiente en la tabla:

IdCliente     Nombre_Cliente     Dni_Cliente     Fecha_Nacimiento
1                   Pepe Sierra               C243435          1900/10/10

Si quieren conocer en detalle acerca del tema, pueden acceder al sitio:
 
 

Comentarios

  1. Aqui puedes complentar la informacion:

    http://foreveraloneprogrammers.blogspot.com/2013/04/crear-campo-autonumerico-en-oracle-con.html

    ResponderEliminar
  2. Gracias Jhonatt@n!
    Muy interesante lo que escribes allí y está muy bien el video para explicar mejor el tema.

    ResponderEliminar
  3. ¿sabes como hacer para poder meter un cero en el campo IdCliente?

    ResponderEliminar
  4. Hola James, debes eliminar el trigger para que te deje insertar en el campo IdCliente, insertas el registro con el IdCliente en cero y luego lo vuelves a crear el trigger para que la tabla se comporte normal... Espero que te ayude esto, si tienes otra duda me cuentas!

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Como Construir la dimension tiempo en SQL SERVER

Reiniciar el Intelligence Server de Microstrategy

Extraccion, Transformación y Carga