Generar correlativo con un trigger en Oracle

by ryudice on March 26, 2007

El correlativo o index de una tabla es el campo unico, que la mayoria de veces es un numero, de cada fila, por ejemplo, tengo una tabla de articulos para la venta, con los campos ID,DESCRIPCION entonces ID seria el correlativo, este ID normalmente es un numero que empieza a contar desde 1 por cada articulo que se agrega a la tabla, esto se hace por cuestiones de rendimiento de la base, y para indexar la informacion. La forma mas facil de generar este campo, ya que en oracle no se genera el solo, es usando un trigger. Si no saben que es un trigger, un trigger es un procedimiento que se ejecuta cuando ocurre un evento, por ejemplo, se pueden hacer triggers que se ejecutan en un INSERT, SELECT,UPDATE o DELETE en la tabla. El trigger que se usa para generar el correlativo es el siguiente:

CREATE OR REPLACE TRIGGER TR_GENERAR CORRELATIVO
BEFORE INSERT
ON ARTICULOS
REFERENCING NEW AS New
FOR EACH ROW
DECLARE
contador NUMBER;
BEGIN
contador:=0;
SELECT NVL(MAX(id),0) +1 INTO contador
FROM articulos;
:NEW.id:=contador;
END;

TR_GENERAR CORRELATIVO es el nombre del trigger, pueden dar el que ustedes quieran
BEFORE INSERT quiere decir que el trigger se va ejecutar antes de cada insert
ON ARTICULOS es la tabla en la que se va activar el trigger, en este caso es la tabla articulos
REFERENCING NEW AS New con esta linea declaramos que la nueva fila es New, asi podemos accesar los campos de la nueva fila.
FOR EACH ROW quiere decir que corre para cada fila.
SELECT NVL(MAX(id),0) +1 INTO contador FROM articulos; Este es el query que usamos para contar el numero por el cual va el correlativo, y le sumamos 1, ya que el correlativo de nuestra nueva fila va ser el correlativo mayor que existe mas la suma de 1.
:NEW.id:=contador; en esta fila especificamos el valor del campo ID de la nueva fila que estamos insertando, el INSERT no debe llevar valor para este campo.

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Twitter

Related posts:

  1. Herramienta para generar un diccionario de datos en SQL Server
  2. 4 TIPS DE ORACLE
  3. Como crear un indice en oracle increiblemente rapido
  4. Seleccionar filas de una tabla aleatoriamente en oracle

{ 1 comment… read it below or add one }

ke November 6, 2007 at 1:33 pm

gracias muy exacta tu respueesta..

Leave a Comment

Get Adobe Flash playerPlugin by wpburn.com wordpress themes

PensandoEnCodigo is Digg proof thanks to caching by WP Super Cache