Añadir columnas, editar columnas, realizar funciones

Añadir columnas

ALTER TABLE ESTUDIANTES
ADD ciudad VARCHAR2(20);
Editar columnas
ALTER TABLE ESTUDIANTES
MODIFY ID NUMBER(3);
Creación de ID auto-incrementable con secuencias
1. Creamos la tabla
CREATE TABLE ADMINISTRADORA(
  ID NUMBER(5PRIMARY KEY,
  NOMBRE VARCHAR2(20),
  FECHA DATE);
2. Creamos una secuencia
CREATE SEQUENCE SEQ_ADMIN_ID
START WITH 1
INCREMENT BY 1
NOMAXVALUE;
SEQ_ADMIN_ID =  Nombre de secuencia
START WITH = Valor inicial
INCREMENT BY = Tipo de incremento ejem : [1,2,3,4,5,6][2,4,6,8,10][10,20,30,40,50];
NOMAXVALUE = Valor máximo para los id

3. Creamos un disparador que se ejecuta antes de añadir los datos
CREATE TRIGGER TRIG_ADMIN_ID
  BEFORE INSERT ON ADMINISTRADORA
  FOR EACH ROW
  BEGIN
    SELECT SEQ_ADMIN_ID.nextval INTO :new.ID FROM dual;
  END;
TRIG_ADMIN_ID = Nombre de disparador
BEFORE INSERT ON = Ejecución de disparador antes de cada fila
BEGIN = Iniciar disparador
SEQ_ADMIN_ID.nextval = Llama al próximo valor en la secuencia
INTO:new.ID = inserta el nuevo en la fila
END = termina el disparador

4. Insertar datos en la tabla
INSERT INTO ADMINISTRADORA (NOMBRE, FECHA)
VALUES ('nombre2'to_date('10/08/1995''dd/mm/yyyy'));
De esta manera el ID se añadirá automáticamente sin repetirse.

 Creación de funciones para código repetitivo

1. Creamos la tabla
CREATE TABLE viajes(
  id NUMBER(10PRIMARY KEY,
  nombre VARCHAR2(100NOT NULL,
  fecha DATE
);
 2. Creamos la función seteando los parámetros.
CREATE OR REPLACE PROCEDURE agregarViaje (id IN NUMBER, nombre IN VARCHAR2, fecha IN DATE)
agregarViaje = Nombre de la función o procedimiento
(id IN NUMBER, .....) = Los parámetros que va recibir la función
2.2 Iniciamos la función y añadimos el código a ejecutar y finalizamos la función
IS BEGIN
  INSERT INTO viaje (id, nombre, fecha)
    VALUES (id, nombre, fecha);
  COMMIT;
END;
IS BEGIN = Inicia la función
INSERT INTO = Ingresa los datos a la tabla viaje
VALUES = Aquí se pasan  los parámetros configurados al inicio de la función
El código debe terminar así, se ejecuta un sola vez y queda guardado en memoria
CREATE OR REPLACE PROCEDURE agregarViaje (id IN NUMBER, nombre IN VARCHAR2, fecha IN DATE)
  IS BEGIN
  INSERT INTO viaje (id, nombre, fecha)
    VALUES (id, nombre, fecha);
  COMMIT;
END;
2.3 Insertar datos a la tabla con el proceso anteriormente almacenado
CALL agregarViaje(100,'Nombre'current_date);
CALL = Llama la función
agregarViaje = al nombre de la función
(100,....) = Parámetros a insertar en la tabla

De esta manera solo llamamos agregarViaje() para insertar datos en la tabla y prescindir de las repeticiones de código.

3 Plus Id auto incrementable en la función
3.1 Creamos la secuencia
CREATE SEQUENCE VIAJE_SEQUENCE
  MINVALUE 1
  START WITH 1
  INCREMENT BY 1;
3.2 Insertamos la secuencia en la función
CREATE OR REPLACE PROCEDURE agregarViaje (nombre IN VARCHAR2, fecha IN DATE)
  IS BEGIN
  INSERT INTO viaje (id, nombre, ciudad, fecha)
    VALUES (VIAJE_SEQUENCE.nextval, nombre, ciudad, fecha);
  COMMIT;
END;
VIAJE_SEQUENCE.nextval = ID auto incrementable
3.3 Insertamos datos en la tabla

CALL agregarViaje('Nombre'current_date);
De esta manera prescindimos de repeticiones de código y de la inserción del id manual.


Share this

Related Posts

Previous
Next Post »