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:
Aqui puedes complentar la informacion:
ResponderEliminarhttp://foreveraloneprogrammers.blogspot.com/2013/04/crear-campo-autonumerico-en-oracle-con.html
Gracias Jhonatt@n!
ResponderEliminarMuy interesante lo que escribes allí y está muy bien el video para explicar mejor el tema.
¿sabes como hacer para poder meter un cero en el campo IdCliente?
ResponderEliminarHola 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