InterBase / Firebird: el uso de eventos



Documentos relacionados
Checks, Triggers y Excepciones en InterBase: validando desde la base de datos

Delphi, conexión a firebird con componentes IBX

Jair Ospino Ardila -- Guía Sencilla

GUIA DE TRIGGERS (Disparadores) EN MYSQL

Triggers. BASES DE DATOS Mercedes García Merayo

DISPARADORES EN SQL DISPARADORES EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999

Para el siguiente trabajo utilizamos IBM Data Studio Version Un ABM completo de una tabla. 1.a) Alta de una sucursal.

5.1 Procedimientos y Funciones Almacenados. 5.2 Disparadores (Triggers).

Introducción al SQL de InterBase: DDL y DML

Sentencias complementarias + Disparadores

Modelamiento y Diseño de Base de Datos

Aplicaciones de Bases de Datos con Delphi - II

MANUAL DE PROGRAMACIÓN PARA BASES DE DATOS 1.0 MySQL

BD Activas: Motivación

Artículos técnicos Grupo Danysoft: De Delphi a Interbase ida y vuelta [IV]

Triggers 24/12/2016. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers en Oracle

Triggers. Introducción

PROCEDIMIENTOS ALMACENADOS

A. Introducción. B. Los DATABASES TRIGGERS. PL/SQL en objetos de la base de datos. Oracle 11g - SQL, PL/SQL, SQL*Plus 271

TRIGGER LEONEL CADOSO ROMERO 1

Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers

Integración script de servidor con los sistemas gestores de base de datos

Diseño de bases de datos

Creación de una Base de datos

Unidad III. Bases de Datos

Ejercicios Tema /03/2009

Seguidamente activaremos la casilla de Guardar como tipo: Plantilla de Outlook, escribiremos un nombre y haremos clic sobre Guardar.

Triggers en PL/SQL. Jonathan Medina Gómez Facultad de Ingeniería Universidad de Antioquia

Tablas dinámicas en Excel Dr. Raúl Morales Salcedo

SQL SERVER Para ingresar a la ventana de administración del SQL Server, proceda a realizar los siguientes pasos:

Bases de Datos 2: Procedimientos Almacenados, Funciones y Triggers. Tecnólogo en Informática, sede Paysandú Bases de Datos 2

DIPLOMADO FRAMEWORK PARA DESARROLLO DE SISTEMAS DE INFORMACIÓN EMPRESARIALES

Tutorial. Utilizar la conexión a Firebird de un componente FIBplus en Report Manager

Actualización de la Base de Datos - Business Components

1. Primero abrimos el aplicativo pgadmin con el cual manejaremos la base de datos de Postgres.

Conectar LibreOffice con Firebird mediante ODBC

COMBINAR CORRESPONDENCIA

1. Se usará la Base de Datos llamada. 2. Borrar la tabla CtasBanc anterior y crearla: 5.1 Procedimientos y Funciones Almacenados SQL Server

Definición de Trigger. Activación de los triggers ... Tipos de evento. Características de un trigger

Para crear una función o un procedimiento se deben usar las instrucciones CREATE FUNCTION o CREATE PROCEDURE.

Python desde Cero: Bases de Datos

Sistemas de Bases de Datos II ITS / ITSB EMT CETP

1. Primero abrimos el aplicativo pgadmin con el cual manejaremos la base de datos de Postgres.

Existen dos tipos de disparadores que se clasifican según la cantidad de ejecuciones a realizar:

Examen de Bases de datos Grado de Ingeniería en Informática, Febrero, 2015

Tema: DISPARADORES (TRIGGERS)

Unidad 6. Procedimientos Almacenados y Disparadores

- 1 - Mg. Abril Saire Peralta

2 - Para instalar PostgreSQL. # apt-get install postgresql

Triggers 27/11/2014. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers en Oracle

Examen de Ficheros y bases de datos Convocatoria de junio II PARCIAL

Creación de formularios con Microsoft Forms

Data Bases 2. La sintaxis precisa de esta función es: mysql_pconnect (nombre del servidor, el usuario de la base de datos, password ) ;

Pre-Taller Gestión de Privilegios de Usuarios 2. Manipulación de Vistas 3. Creación y manipulación de Triggers (Introducción al uso de PL/pgsql)

BASES DE DATOS AVANZADAS Transacciones en MYSQL

Programación Delphi con Bases de datos

T07 Opciones de integridad referencial

Tipos de datos compuestos

La sintaxis de un trigger a nivel de registro es:

Sistema de Gestión y almacenamiento de archivos en el Campus Virtual

Jesús Ernesto Peña Zamudio Kronos de Colombia Limitada

UNIVERSIDAD DON BOSCO

SQL SERVER APLICADO (SSA010)

Modelamiento y Diseño de Base de Datos

Creando CRUD en PHP: operaciones básicas para la gestión de bases de datos

Sesión No. 10. Contextualización INFORMÁTICA 1. Nombre: Gestor de Base de Datos (Access)

Programación con acceso a base de datos

Create Database ClaseAutos. Use ClaseAutos

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DML. Ing. Alfonso Vicente, PMP

OBJETIVO GENERAL.- Aplicar los conocimientos adquiridos durante el estudio del tema SQL.

Gestion de Plan de Cuentas

Utilizar la cláusula RETURNS es obligatorio al momento de definir una función y sirve para especificar el tipo de dato que será devuelto.

Combinar correspondencia

CASO-PRACTICO-3-FTP. 1) Entrega una manual de los pasos que has realizado para instalar el servidor FTP y configurarlo de forma anónima.

1. En primer lugar, seleccionamos la celda o caracteres a los que queremos aplicar el nuevo formato.

Combos en cascada en un Formulario Continuo (primera parte)

SUBPROGRAMAS PL/SQL César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC

Actualización de la Base de Datos - Business Components

1. Reglas ACID: comprobar la propiedad Atomicidad, lo que se ejecuta en una transacción se ejecuta todo o nada, usando la tabla clientes.

Examen de Ficheros y bases de datos (cód. 520) Ingeniería Técnica en Informática de Gestión Convocatoria de septiembre. II Parcial

Microsoft Virtual Academy

CREACIÓN DE BASE DE DATOS EN SQL SERVER 2005 USANDO SQL SERVER MANAGEMENT STUDIO EXPRESS

Universidad Autónoma de Chihuahua Coordinación General de Tecnologías de Información Departamento de Sistemas de Información

PRÁCTICA T2. El lenguaje procedural PL/SQL de Oracle

Solución Ejercicio Prac. 3b (Esquema).

ANEXO I NIVELES DE AISLAMIENTO

Para eso abrimos el ambiente de desarrollo de Genexus.

Manual Excel Macros

ACTIVIDADES BASE DE DATOS ACCESS 2007

INSTITUTO TECNOLOGICO SUPERIOR DE LERDO

DEMOSTRACION DE UNA APLICACIÓN N-CAPASCON JAVA- POSTGRESQL

Java y Access. 4. En nuestra pantalla aparecerá ahora la pestaña DSN usuario seleccionada. Para crear un nuevo perfil haremos click en Agregar...

MANUAL DE MACROS EXCEL 2010

Se crean para conservar la integridad referencial y la coherencia entre los datos entre distintas tablas.

INSTITUCIÓN MANUEL MARÍA SÁNCHEZ Tecnología e Informática Word

Transacciones en SQL Server Autor: Cesar Manivesa (manivesa)

Base de Datos. Docente: Ing. Francisco Rodríguez BASE DATOS. Resultados. Internet. Requerimientos

Transcripción:

InterBase / Firebird: el uso de eventos Este artículo pretende dar una breve introducción acerca del uso de los eventos de Firebird e InterBase y como usarlos desde Delphi. Los eventos permiten a las aplicaciones responder a acciones y cambios en las Bases de Datos hechos por algún usuario, cuando más de una aplicación se está ejecutando al mismo tiempo, evitando, de esta manera, la necesidad de que las aplicaciones se comuniquen directamente unas con otras y sin incurrir en la pérdida de tiempo que requiere un polling periódico para determinar un cambio en la Base de Datos. En Firebird/InterBase, un evento es un mensaje pasado por un trigger o un procedimiento almacenado al manejador de eventos de Firebird/InterBase para anunciar la ocurrencia de una condición o acción específica, usualmente un cambio en la Base de Datos como por ejemplo, Insert, Update o Delete. Hay que tener en cuenta que los eventos son registrados solamente después de que la transacción bajo la cual este evento ocurre es llevada a cabo (Commit). Cada vez que se produce un evento, el servidor de Firebird/InterBase notifica a las aplicaciones interesadas la ocurrencia del mismo. La declaración que se utiliza en Firebird/InterBase para eventos es POST_EVENT. Se debe tener en cuenta que la declaración POST_EVENT solamente puede ser utilizada en triggers y procedimientos almacenados. Un ejemplo. Supongamos que estamos realizando una aplicación que debe trabajar en red, y que nos interesa que cuando se está ejecutando más de una aplicación al mismo tiempo, los cambios que se producen en una aplicación se reflejen en las aplicaciones restantes. Podemos crear un trigger que produzca un evento cada vez que cualquier aplicación inserte datos en una tabla. El código que deberíamos utilizar sería como el que sigue. CREATE TRIGGER TR_POST_NEW_REG FOR TABLA AFTER INSERT POST_EVENT 'new_reg'; Donde TR_POST_NEW_REG es el nombre que le damos al trigger que estamos creando, TABLA corresponde al nombre de la tabla para la que estamos creando el trigger y new_reg es el nombre que le damos a nuestro evento. El nombre de los eventos está restringido a un máximo de 15 caracteres. Hasta aquí creamos un trigger que se va a activar cada vez que se inserte un nuevo registro en nuestra base de datos. Ahora vamos a ver como manejamos esto desde Delphi. Delphi 5 incorpora una nueva paleta de componentes, conocidos como componentes IBX. Dentro de esta paleta contamos con el componente IBEvents que será quien nos permitirá manejar los eventos que hayamos realizado con Firebird/InterBase.

Usando IBEvents. Una vez que hayamos incorporado a nuestra aplicación un componente IBEvents debemos poner en su propiedad IBDataBase el nombre del componente IBDataBase que está relacionado con la Base de Datos que generará el evento en el que estamos interesados. El componente IBEvents posee un único Evento, como podremos comprobar en el Object Inspector, el evento OnEventAlert, aquí deberemos escribir el código que nos interese que realice nuestra aplicación cuando se produce el evento de interés. Otro punto muy importante a tener en cuenta, es que nuestra aplicación debe registrar interés en la ocurrencia de eventos. Esto podemos hacerlo mediante el siguiente código: IBEvents.Events.Add('nombre_del_evento'); IBEvents.RegisterEvents; Donde nombre_del_evento, es el mismo nombre que le dimos cuando creamos el trigger o un procedimiento almacenado, siguiendo con nuestro ejemplo anterior en nombre_del_evento, deberíamos poner new_reg. Si en algún momento deseamos que nuestra aplicación no reciba notificación acerca de la ocurrencia de un evento, simplemente deberemos usar IBEvents.UnRegesterEvents. Con esta pequeña introducción, ya estamos en condiciones de comenzar a utilizar los eventos de Firebird/InterBase, pero debido a que siempre todo queda más claro mediante un ejemplo, vamos a desarrollar ahora un pequeño ejemplo acerca del uso de eventos. Ejemplo de uso de eventos de Firebird/InterBase. Vamos a crear una base de datos firebird/interbase, y una tabla a la que llamaremos Clientes. Supongamos que la información que nos interesa de los clientes es la siguiente: Nombre, Teléfono, Número de documento y Dirección. Entonces, para crear nuestra tabla hacemos: CREATE TABLE CLIENTES ( CLAVECLIENTE INTEGER NOT NULL, NOMBRE VARCHAR(70), TELEFONO VARCHAR(15), DOCUMENTO VARCHAR(20), DIRECCION VARCHAR(100) ) Una vez creada la tabla vamos a crear tres eventos, manejados por triggers, para avisar a nuestra aplicación cuando se inserte, modifique y borre un registro. 1. Trigger para la inserción de registros: CREATE TRIGGER NUEVO_CLIENTE FOR CLIENTES AFTER INSERT POST_EVENT 'NEW_CLIENTE'; 2. Trigger para la modificación de registros: CREATE TRIGGER CAMBIOS_EN_CLIENTE FOR CLIENTES AFTER UPDATE POST_EVENT 'CAMBIO_CLIENTE'; 3. Trigger para la eliminación de registros:

CREATE TRIGGER BORRO_CLIENTE FOR CLIENTES AFTER DELETE POST_EVENT 'DEL_CLIENTE'; Finalmente vamos a hacer un generador y un trigger que nos incremente automáticamente la clave (llave primaria) de nuestra base de datos. Primero hacemos el generador: CREATE GENERATOR G_CLAVECLIENTE Y ahora el trigger: CREATE TRIGGER CLIENTE_BI FOR CLIENTES BEFORE INSERT NEW.CLAVECLIENTE=GEN_ID(G_CLAVECLIENTE,1); Ahora vamos a ver como usar estos eventos desde Delphi. Abrimos una nueva aplicación desde Delphi y ponemos, por ahora, los siguientes componentes: un IBDataBase y un IBTransaction. Conectamos el componente IBDataBase a nuestra base de datos, ponemos su propiedad Connected a true, y lo asociamos con el componente IBTransaction. También asociamos el componente IBTransaction con el componente IBDataBase. Ahora colocamos un componente IBDataSet y lo asociamos al IBDataBase, y escribimos lo siguiente: * Propiedad SelectSQL SELECT * FROM CLIENTES * Propiedad InsertSQL INSERT INTO CLIENTES(CLAVECLIENTE, NOMBRE,DOCUMENTO, TELEFONO, DIRECCION) VALUES(:CLAVECLIENTE, :NOMBRE, :DOCUMENTO,:TELEFONO, :DIRECCION) * Propiedad ModifySQL UPDATE CLIENTES SET NOMBRE=:NOMBRE, DOCUMENTO=:DOCUMENTO, TELEFONO=:TELEFONO, DIRECCION=:DIRECCION WHERE CLAVECLIENTE=:OLD_CLAVECLIENTE * Propiedad DeleteSQL DELETE FROM CLIENTES WHERE CLAVECLIENTE=:OLD_CLAVECLIENTE Poner la propiedad Active del IBDataSet a true. Colocamos un componente DataSource de la paleta Data Access y lo asociamos al componente IBDataBase. Agregamos un DBGrid, y los asociamos con el DataSource. Ahora agregamos al Form un componente IBEvents y lo asociamos con el DataBase mediante

su propiedad DataBase. Vamos a poner cuatro botones, uno para agregar un nuevo cliente, otro para borrar un cliente, otro para modificar los datos de un cliente y finalmente un botón para llevar a cabo la transacción. El Form nos tiene que quedar como muestra la siguiente figura. Finalmente, vamos a ver el código que utilizamos desde Delphi: Primero, registramos los eventos en los que nuestra aplicación tiene interés. Esto lo hacemos en el evento FormShow de nuestro Form mediante el siguiente código: IBEvents1.Events.Add('NEW_CLIENTE'); IBEvents1.Events.Add('DEL_CLIENTE'); IBEvents1.Events.Add('CAMBIO_CLIENTE'); IBEvents1.RegisterEvents; Ahora, vamos a escribir el código necesario para insertar, modificar y borrar registros de nuestra base de datos. Para esto vamos a usar el evento Onclick de los botones que pusimos en el Form. 1. Botón Agregar: IBDataSet1.Insert; IBDataSet1.FieldByName('CLAVECLIENTE').asinteger:=1; 2. Botón Borrar: IBDataset1.Delete; IBTransaction1.CommitRetaining; 3. Botón Modificar: IBDataSet1.Edit; El botón Aceptar lo vamos a usar para llevar a cabo las transacciones cuando insertamos o modificamos un registro, entonces en su evento Onclick escribimos el siguiente código: IBDataset1.Post; IBTransaction1.CommitRetaining; Finalmente, vamos a hacer que nuestra aplicación lleve a cabo alguna acción cuando se registra un evento. Para esto en el evento OnEventAlert del IBEvent, que es el único evento con el que cuenta este componente, escribimos el siguiente código:

if EventName='NEW_CLIENTE' then showmessage('registro nuevo en la base de datos') else if EventName='DEL_CLIENTE' then showmessage('se borró un registro de la tabla') else if EventName='CAMBIO_CLIENTE' then showmessage('se modificaron los datos del cliente'); Y a probar... Con esto finalizó esta pequeña introducción al uso de Eventos de Firebird e InterBase. Espero realmente que les sea de utilidad. (por Erika Martínez) Buenos Aires, Argentina