Algunos beneficios de usar desencadenantes
Sintaxis
La sintaxis de crear un gatillo se da a continuación.
Crear [o reemplazar] [restricción] nombre de activación antes | Después de | En lugar de evento [o ...]Requisitos previos
A. Instale el PostgreSQL
Debe instalar la última versión de los paquetes PostgreSQL en el sistema operativo Linux antes de ejecutar las declaraciones SQL que se muestran en este tutorial. Ejecute los siguientes comandos para instalar e iniciar el PostgreSQL:
$ sudo apt-get -y instalación postgresql postgresql-contrib
$ sudo systemctl iniciar postgresql.servicio
B. Ejecute el siguiente comando para iniciar sesión en PostgreSQL con privilegio raíz.
$ sudo -u postgres psql
C. Puede crear una base de datos llamada "testdb " ejecutando la siguiente instrucción SQL.
# Crear base de datos TestDB;Si quieres crear una tabla en el testdb base de datos, entonces tienes que escribir "\C" Para cambiar la base de datos. Pero en este tutorial, no cambié la base de datos, y la tabla y todas las funciones se crearon en la base de datos predeterminada nombrada post -put.
Crea una tabla llamada maestros y cursos con algunos registros para probar el uso de desencadenantes que se crearán más adelante en este tutorial.
Crear maestros de mesa (Ejemplos de activación
Cada disparador está asociado con una función PostgreSQL. Entonces, debe crear la función antes de crear el disparador. La forma de crear diferentes tipos de desencadenantes se ha mostrado en esta parte del tutorial.
Ejemplo-1: Crear antes de insertar disparador
Los disparos antes de insertar los disparos antes de realizar cualquier operación de inserción. Ejecute la siguiente instrucción SQL para crear una función nombrada antes_insert () que se utilizará en un Antes de insertar desencadenar. Uno de los principales propósitos de usar un desencadenante es la validación de datos. La siguiente función verificará si los campos particulares están vacíos o no. Si alguno de los valores de campo permanece vacío, se generará un mensaje de error particular. Se verificará otra validación para el nombre campo, y se generará un mensaje de error si la longitud de este campo es inferior a 5. La siguiente declaración condicional se utiliza para concatenar el valor de la cadena "+88" con el Contact_no Si la longitud del Contact_no el campo es 11.
Crear o reemplazar la función antes_insert ()La siguiente salida aparecerá si la función se crea correctamente en el post -put base de datos.
Ejecute la siguiente instrucción SQL para crear un disparador con nombre check_before_insert que ejecutará el antes_insert () función antes de insertar el nuevo registro en el maestros mesa.
Crear chateo check_before_insertLa siguiente salida aparecerá si el disparador se crea correctamente.
Ejecute la siguiente declaración de inserción que contiene todos los datos válidos.
Insertar en maestros (nombre, dirección, contact_no)La siguiente salida aparecerá si el nuevo registro se inserta correctamente.
Ejecute la siguiente declaración de inserción que contiene los datos no válidos para el campo Nombre.
Insertar en maestros (nombre, dirección, contact_no)El siguiente mensaje de error aparecerá para el valor de nombre no válido.
Ejecute la siguiente instrucción de inserción que contiene el valor vacío para el DIRECCIÓN y Contact_no campos, y el valor vacío para estos campos no es válido.
Insertar en maestros (nombre, dirección, contact_no)El siguiente mensaje de error aparecerá para los valores vacíos.
Ejecute la siguiente instrucción Seleccionar para verificar qué registros se insertan después de usar el activador antes de insertar.
Seleccionar * de los maestros;La siguiente salida muestra que solo se inserta un registro después de usar el disparador.
Ejemplo-2: Crear después del disparador de eliminación
El disparador de eliminación de eliminación posterior se dispara después de eliminar cualquier registro de la tabla en particular. Ejecute la siguiente instrucción SQL para crear una función nombrada After_delete () que se utilizará en un Después de eliminar activar para eliminar las filas relacionadas del cursos tabla cuando se elimina un registro del maestros mesa. Aquí, un viejo.identificación se ha utilizado para rastrear el eliminado identificación desde el maestros mesa.
Crear función después_delete ()La siguiente salida aparecerá si la función se crea correctamente en el post -put base de datos.
Ejecute la siguiente instrucción SQL para crear un disparador con nombre delete_teacher que ejecutará el After_delete () función después de eliminar un registro del maestros tabla que eliminará los registros del cursos mesa donde el profesor_id Valor coincide con el eliminado identificación valor de la maestros mesa.
Crear gatillo delete_teacherLa siguiente salida aparecerá si el disparador se crea correctamente.
Ejecute la siguiente declaración de eliminación que eliminará el registro de la tabla de los maestros donde el identificación el valor es 1. El delete_teacher El gatillo se disparará si se elimina algún registro del maestros mesa.
Eliminar de los maestros donde id = 1;La siguiente salida muestra que un registro se ha eliminado de la tabla de los maestros. Entonces el delete_teacher El gatillo será despedido y eliminará todos los registros de la tabla de cursos que contiene 1 en el profesor_id campo.
Ahora, ejecute los siguientes comandos de selección para verificar qué registros se eliminan de la maestros y cursos mesas.
Seleccionar * de los maestros;La salida muestra que un registro se ha eliminado de la tabla de los maestros, y se han eliminado dos registros de la tabla de cursos utilizando el disparador.
Ejemplo-3: Crear en lugar de activación de activación
El desencadenante en lugar de la actualización se puede aplicar solo en las vistas de la tabla. Por lo tanto, debe crear una vista de la tabla y una función para probar el uso de este tipo de disparador. Ejecute la siguiente instrucción SQL para crear una función nombrada insert_course () que actualizarán los valores del maestros y el cursos tabla después de insertar un nuevo registro para el cursos mesa. El propósito de esta función es asignar un maestro para el nuevo curso si el maestro está disponible.
Crear o reemplazar la función insert_course ()La siguiente salida aparecerá si la función se crea correctamente en el post -put base de datos.
Ejecute el siguiente comando SQL para crear una vista de la tabla de cursos.
Crear ver cursos_view comoLa siguiente salida aparecerá si la vista se crea con éxito.
Ahora, ejecute la siguiente instrucción SQL para crear el disparador Instance de Insertar con nombre actualizar datos que se disparará cuando se inserta un nuevo registro utilizando el create_view vista.
Crear gatillo update_dataLa siguiente salida aparecerá si el disparador se crea correctamente.
Ejecute la siguiente declaración de inserción para insertar un nuevo registro en la tabla de cursos utilizando cursos_view vista.
Insertar en Courses_View (Nombre, Credit_Hour)La siguiente salida aparecerá si los datos se insertan correctamente utilizando la vista.
Ahora, ejecute las siguientes declaraciones de selección para verificar cómo se han modificado los cursos y las tablas de maestros después de insertar un nuevo registro en la tabla de cursos utilizando la vista.
Seleccionar * de los maestros;La siguiente salida muestra que se ha insertado un nuevo registro en la tabla de cursos y el campo disponible del maestros La tabla se ha actualizado de "T" a "F", donde el valor de ID es 3, y este valor de ID se ha actualizado en el cursos tabla para asignar a este maestro para el curso recién insertado.
Conclusión
Muchas tareas de la base de datos se pueden realizar automáticamente utilizando un disparador en la base de datos PostgreSQL. Cada disparador se ejecuta utilizando una función particular. Muchos propósitos del uso de desencadenantes se han explicado en este tutorial creando múltiples desencadenantes con la función. Aquí se han creado tres tipos diferentes de desencadenantes que ayudarán a los nuevos usuarios de PostgreSQL a conocer la forma de crear y usar desencadenantes en la base de datos PostgreSQL.