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(5) PRIMARY 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(10) PRIMARY KEY,
  nombre VARCHAR2(100) NOT 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 »