borrame.com - Colección particular de recortes de código y documentación para programación web

Lo más fresco

  1. LPAD en SQL Server Nuevo
  2. Eliminar todos los objetos en SQL Server Modificado
  3. Dominio principal Nuevo
  4. Eliminar formato en Excel Nuevo

Sugerencias del chef

Lo más visitado

  1. Dar formato a un número
  2. Campo autonumérico
  3. Fecha y hora
  4. Cookies
  5. Convertir IP entre cadena y número

Campo autonumérico

En Access se llama Autonumérico. En MySQL se denomina AUTO_INCREMENT. En SQL Server se conoce como IDENTITY. Y en Oracle... En Oracle se lo programa uno mismo con una secuencia, un trigger y un par de huevos. Porque Oracle es cosa de hombres.

/*
 * Tabla con clave primaria autoincremental
 */

CREATE TABLE FOO (
    FOO_ID NUMBER(*,0) NOT NULL,
    -- ... y resto de campos

    CONSTRAINT FOO_PK PRIMARY KEY (FOO_ID)
);

COMMENT ON COLUMN FOO.FOO_ID IS 'Secuencia';


/*
 * Secuencia para la clave primaria
 */

CREATE SEQUENCE FOO_SEQ1
INCREMENT BY 1
START WITH 1
MINVALUE 1
CACHE 20;


/*
 * Generador de IDs para la clave primaria
 */

CREATE OR REPLACE TRIGGER FOO_TRG1
    BEFORE INSERT
    ON FOO
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
BEGIN
    -- Si no se ha indicado un ID generamos uno
    IF :NEW.FOO_ID IS NULL THEN
        SELECT FOO_SEQ1.NEXTVAL INTO :NEW.FOO_ID FROM DUAL;
    END IF;

    EXCEPTION
        WHEN OTHERS THEN RAISE;
END FOO_TRG1;
/
ALTER TRIGGER FOO_TRG1 ENABLE;

Notas

Esta página ha sido impresa el miércoles 10 de marzo de 2010 (22:19:55 +0100) desde http://borrame.com/recortes/oracle/campo-autonumerico.html. La última vez que miré contenía HTML válido con CSS fresquito y si tiene flatas de ortografía ha sido sin querer.

borrame.com es el sitio anteriormente conocido como bits.demogracia.com (no confundir con Demogracia, que sólo pasaba por ahí).

© 2005-2010 by Álvaro G. Vicario (alvaro.es) • Burgos (España) • borrame.com