Cargando



phpMyAdmin - Funciones y Triggers

En este tutorial veremos cómo crear las funciones, los triggers y cómo utilizar cada uno de estos.


sep 24 2013 22:28
Avanzado
may 04 2016 17:39

Las funciones son muy similares a los Stored Procedures (SP), la diferencia radica en algunos detalles, siendo la principal que solo retornan un valor, cuando un SP puede retornar más de uno, adicionalmente no necesitamos una variable para almacenar el valor que resulta por lo que es mucho más fácil de utilizar dentro de un SELECT.

 

Creando una Función
El objetivo de una función es hacer aislar la lógica detrás de ciertos elementos de forma que sean más sencillos de utilizar, de esta forma podemos documentar la base de datos y su funcionamiento y poder simplificar el accionar de la aplicación que pudiera estar comunicándose con la base de datos. Para crear una función utilizaremos los siguientes elementos:
  • El Query Box, donde podremos escribir la función.
  • El cambio del delimitador.
  • El mecanismo de edición y manipulación de la función.

 

Veamos cómo definir una función a través de un ejemplo:

CREATE FUNCTION get_country_name(param_country_code CHAR(2))

  RETURNS VARCHAR(50)

  READS SQL DATA

BEGIN

  DECLARE var_country_name VARCHAR(50) DEFAULT 'not found';

  SELECT description  

 FROM country

    WHERE code = param_country_code

    INTO var_country_name;

  RETURN var_country_name;

END

//

Como vemos la sintaxis es muy similar a aquella de los SP, solo que acá no definimos los valores de IN y OUT si no que definimos los parámetros que ingresan y declaramos un solo valor que será el RETURN.
Cuando vamos al apartado de Routines en la página estructura en la Base de Datos la veremos reflejada de la siguiente forma:

 

 

Funciones-triggers.jpg

 

 

Luego que tenemos nuestra función creada, veamos cómo podemos probarla, esta función que utilizamos de prueba lo que hace es consultar contra una tabla de países y devolver el nombre de un país cuando preguntamos por un código, en caso de no encontrarlo nos devuelve not found:

SELECT CONCAT('ca->', get_country_name('ca'), ', zz->',

get_country_name('zz')) as test;

Simplemente hacemos un select con un CONCAT de forma de unir los resultados en una cadena y obtendremos lo siguiente:
ca->Canada, zz->not found
Como vemos es mucho más sencillo que construir los query que consultaran cada país por separado.

 

Triggers
Los Triggers son diferentes a las funciones y a los Stored Procedures, estos no necesitan ser llamados por el usuario, estos van a ocurrir cuando se ejecute alguna acción sobre la tabla a la que están vinculados, lo que nos lleva a la otra diferencia de las funciones, es que son generales; los Triggers si están vinculados a una tabla en específico.
Veamos cómo crear un Trigger:
CREATE TRIGGER after_book_insert AFTER INSERT ON book

FOR EACH ROW

BEGIN

  UPDATE author

  SET total_page_count = total_page_count + NEW.page_count

  WHERE id = NEW.author_id;

END

//

Como podemos ver igualmente tenemos que definir un nuevo delimitador // dentro del query box para que podamos incluir todas las instrucciones del Trigger, en el caso del ejemplo lo vinculamos en el After Insert es decir luego de hacer una inserción y luego ejecutamos la acción definida, esto ayuda a que la Base de Datos de forma autónoma pueda gestionar acciones al momento que sucedan.

 

Una vez creado el Trigger al ir a la página de estructura de la tabla lo veremos disponible:

 

Funciones-triggers_2.jpg

 


¿Te ayudó este Tutorial?


1 Comentarios


Cesar Ortiz
sep 24 2013 22:29

Buenisimo como siempre, GRACIAS;)

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X