Mostrando las entradas con la etiqueta base de datos. Mostrar todas las entradas
Mostrando las entradas con la etiqueta base de datos. Mostrar todas las entradas

sábado, 10 de agosto de 2013

Vistas en base de datos...



• Una vista es una tabla derivada de otras tablas (básicas o virtuales).



• Una vista se caracteriza porque: 

– Se considera que forma parte del esquema externo.
– Una vista es una tabla virtual (no tiene una correspondencia a 
nivel físico)
– Se puede consultar como cualquier tabla básica.
– Las actualizaciones se transfieren a la/s tabla/s original/es 
(con ciertas limitaciones).


La sintaxis para la creación de vistas en SQL es la siguiente:
CREATE | REPLACE VIEW vista [(comalista_columna)]

AS expresión_tabla [with check option]

En donde:
– CREATE VIEW es la orden que permite la creación de la vista.
– vista es el nombre de la tabla virtual que se va a crear.
– (comalista_columna) son los nombres de los atributos de la tabla y es opcional:
• Si no se especifica, el nombre coincide con el nombre de los atributos 
resultantes en expresión_tabla.
• Es obligatorio si algún atributo de expresión_tabla es el resultado de una 

función de agregación o una operación aritmética.

– expresión_tabla es una consulta SQL cuyo resultado será el contenido de la vista.
– WITH CHECK OPTION es opcional y se debe incluir si se desea actualizar la 
vista de una manera íntegra.


  • Para la eliminación de una vista se utiliza la instrucción:


      DROP VIEW
nombredelavista


  • Para la creacion de vistas y modificacion se utiliza:
    CREATE VIEW nombredelavista, ALTER VIEW nombredelavista

  • Para que te muestre la vista se utiliza la instrucción:

    SHOW CREATE VIEW nombredelavista
Para mas información de vistas visita estas ligas....
http://users.dsic.upv.es/~jorallo/docent/BDA/castella/tema2efg_4x1.pdf
http://dev.mysql.com/doc/refman/5.0/es/create-view.html

Triggers...

Un disparador o trigger es un código procedimental en SQL que automáticamente es invocado por el sistema gestor al presentarse un evento determinado para la manipulacion de datos...

Características:

  • Se invoca antes o después de que un renglón/tupla de datos se ha insertado, actualizado o eliminado
  • Esta asociado a una tabla
  • Cada tabla puede tener uno o mas disparadores
  • Se puede utilizar para actualizar valores de una tabla, insertar registros o llamar a otros procedimientos...
  • Un disparador nunca se llama directamente, el disparador se ejecuta cuando el usuario intenta insertar, eliminar o modificar una fila en una tabla
Los disparadores tienen dos palabras clave, OLD y NEW que se refieren a los valores que tienen las columnas antes  y después de la modificación. Los INSERT permiten NEW, los DELETE sólo OLD y los UPDATE permiten ambas.


Y bueno aquí  miau les dejo unos ejemplos de triggers...
(Debiendo ustedes crear la base de datos con los campos necesarios para que funcione)

  • Descripción del trigger: Al borrar un fabricante de la tabla fabricantes le cambie el id=5 a la tabla articulo si este se ve afectado.
-Sintaxis-
DELIMITER//
CREATE TRIGGER delFabric AFTER DELETE ON fabricante FOR EACH ROW
BEGIN
UPDATE articulo SET fabricante=5;
WHERE fabricante OLD.codigo;
END
//
DELIMITER ;
       
NOTA: el delimiter "//" cambia dependiendo el entorno en donde crees tu base de datos en Query browser se utiliza el "//" y en Workbench se utiliza solo  " | ". Siempre hay que delimitar el trigger porque si no el dbms no sabrá donde termina dicha instrucción




  •    Cuando se agregue un artículo  nuevo si es del fabricante 5  que precio sea 10% mas el nuevo valor     capturado.
-Sintaxis-
DELIMITER //
CREATE TRIGGER insertArt BEFORE INSERT ON articulo FOR EACH ROW
BEGIN
IF(fabricante=5)
THEN SET NEW.precio=NEW.precio*1.10;
END IF ;
END ;
//
DELIMITER ;



  • Trigger que no permite cambiar el precio si es 0 y deja el precio anterior.
-Sintaxis-
DELIMITER |
CREATE TRIGGER precio BEFORE UPDATE ON articulo FOR EACH ROW
BEGIN
IF(NEW.precio=0)
THEN SET NEW.precio=OLD.precio;
ELSE SET NEW.precio=NEW.precio;
END IF ;
END
|
DELIMITER ;


  • Trigger que aumenta el precio de un producto cuando este es modificado y le sube el 10% solo si este es menor a 1000
DELIMITER |
CREATE TRIGGER iva BEFORE UPDATE ON arituculo FOR  EACH ROW
BEGIN
IF(NEW.precio<1000)
THEN SET NEW.precio=NEW.precio*1.10;
ELSE SET NEW.precio=NEW.precio;
END IF ;
END
| 
DELIMITER ;