0% encontró este documento útil (0 votos)
27 vistas

T2 PLPGSQL

Este documento describe el lenguaje procedural PL/pgSQL en PostgreSQL. PL/pgSQL permite realizar cálculos, manejo de cadenas y consultas dentro del servidor de base de datos, combinando las capacidades de un lenguaje procedural con SQL. El lenguaje se compone de bloques con declaraciones, sentencias condicionales como IF, bucles como FOR y funciones.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
27 vistas

T2 PLPGSQL

Este documento describe el lenguaje procedural PL/pgSQL en PostgreSQL. PL/pgSQL permite realizar cálculos, manejo de cadenas y consultas dentro del servidor de base de datos, combinando las capacidades de un lenguaje procedural con SQL. El lenguaje se compone de bloques con declaraciones, sentencias condicionales como IF, bucles como FOR y funciones.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 12

Tema 2: El lenguaje procedural en

postgresql pl/pgsql
LECCIÓN 2: EL LENGUAJE PL/PGSQL EN POSTGRESQL

Autores:

M. Sc. Yaniel Lázaro Aragón Barreda

Ing. Yaili Ledea Velázquez


EL LENGUAJE PL/PGSQL EN POSTGRESQL

Introducción
SQL es un lenguaje estándar para realizar consultas a un servidor de base de datos, quien ejecuta
cada sentencia de manera individual. Ello implica que las aplicaciones cliente deben enviar cada
consulta al servidor, esperar sea procesada, recibir los resultados, manejar los datos y después
enviar la siguiente sentencia.
Al usar PL/pgSQL es posible realizar cálculos, manejo de cadenas y consultas dentro del servidor
de la base de datos, combinando el poder de un lenguaje procedural y la facilidad de uso de SQL,
minimizando el tiempo de conexión entre el cliente y el servidor.
Este lenguaje es soportado por el Sistema Gestor de Bases de Datos PostgreSQL. Dentro de sus
potencialidades se incluye la posibilidad de agrupar bloques de sentencias con una funcionalidad
específica dentro de objetos tipo funciones.
En esta lección se estudiarán los comandos para la creación de funciones y los elementos que la
componen. Además, aprenderá cómo dotar al SGBD de un comportamiento más activo que nos
permitirá controlar de forma más efectiva el manejo de los datos y las sentencias DML
involucradas.
Durante esta Lección se observan algunos códigos generales que emplean el uso de
[corchetes] para resaltar los elementos opcionales dentro de las sintaxis.
Además, [,…] asociado a la posibilidad de repetir o adicionar elementos con el mismo fin
dentro de la sintaxis.
Siempre estarán en color azul las palabras reservadas del lenguaje SQL.

• Antes de adentrarse en la Lección usted debe haber adquirido con anterioridad los
conocimientos asociados al Tema 1:
o Lenguajes DDL y DML
o Tipos de datos

Universidad de las Ciencias Informáticas (UCI),


Carretera a San Antonio de los Baños Km 2 ½,
Torrens, Boyeros, La Habana, Cuba.
EL LENGUAJE PL/PGSQL EN POSTGRESQL

GENERALIDADES DEL LENGUAJE PL/PGSQL


Un lenguaje procedural es un lenguaje estructurado, el cual tiene una estructura muy similar a los
lenguajes de programación tradicionales, aunque con propósito muy específico en este caso para
el tratamiento de los datos dentro de un SGBD.
En el lenguaje PL/pgSQL todas las palabras clave y los identificadores pueden escribirse
mezclando letras mayúsculas y minúsculas, no es case sensitive. Además, se estructura en
bloques que se definen de la siguiente manera:
[DECLARE declaraciones]
BEGIN
sentencias
END;

En la sección de sentencias de un bloque, pueden existir otros bloques o sub-bloques. Estos


últimos suelen ser usados para ocultar las variables a los bloques más externos. Normalmente
una de las sentencias es el valor de retorno, usando la palabra clave RETURN. Las variables
declaradas se inicializan a su valor por omisión cada vez que se entra al bloque, no solamente al
ser llamada la función.
Dentro del código es posible escribir comentarios que ayuden a describir lo que se hace,
contribuyendo así a posteriores mantenimientos. Existen dos tipo de comentarios, el doble guion
(--) da inicio a un comentario, el cual se extiende hasta el final de la línea y /* inicia un bloque que
se extiende hasta la primera ocurrencia de */.
Observe un ejemplo de un bloque que contiene un sub-bloque y comentarios:
DECLARE
/* Se declara una variable de tipo entero
y se inicializa con valor 30 */
cantidad INTEGER := 30;
BEGIN
-- Cantidad contiene aquí 30
cantidad := 50; /* Aquí se le asigna 50 */
-- Creamos un sub-bloque
DECLARE
/* Se declara una variable de tipo entero que no es
visible en el bloque externo por eso puede tener
el mismo nombre y se inicializa con valor 80 */
cantidad INTEGER := 80;
BEGIN
-- Cantidad contiene aquí 80
END;
-- Cantidad contiene aquí 50
END;

Como se observa en el ejemplo anterior, todas las variables, filas y registros usados en un bloque
o en sus sub-bloques deben declararse en la sección DECLARE del bloque, a excepción de las
variables de un ciclo FOR (observar más adelante) que itera sobre un rango de valores enteros.
Las variables en PL/pgSQL pueden ser de cualquier tipo de datos de los estudiados en el Tema 1
y su valor por omisión es el valor NULL de SQL.
En PostgreSQL se pueden definir constantes y su declaración tiene la siguiente sintaxis:
nombre [ CONSTANT ] tipo [ NOT NULL ] [ { DEFAULT | := } valor ]

Universidad de las Ciencias Informáticas (UCI),


Carretera a San Antonio de los Baños Km 2 ½,
Torrens, Boyeros, La Habana, Cuba.
EL LENGUAJE PL/PGSQL EN POSTGRESQL

El valor de una variable declarado como CONSTANT no puede ser modificado. Si acaso se
especifica NOT NULL, la asignación de un valor NULL causa un error en tiempo de ejecución.
Otros ejemplos de declaraciones de variables son:
cantidad INTEGER := 32;
url VARCHAR := 'http://misitio.com';
user_id CONSTANT INTEGER := 10;

En la declaración de variables también es posible copiar el tipo de datos de una fila o estructura
de otro objeto de la base de datos. Por ejemplo si tiene una tabla que guarda la información de las
personas, ejemplo el salario y no sabe si su tipo de dato es entero (INTEGER) o decimal
(DOUBLE), para declarar otra variable del mismo tipo puede usar %TYPE:
c_salario Persona.salario%Type;

Si en cambio, desea declarar una variable del mismo tipo de una fila de la tabla Persona, se puede
emplear %ROWTYPE:
pers Persona%ROWTYPE;

Para asignarle un valor fijo a una variable, ejemplos anteriores, basta con usar := valor. Sin
embargo, una asignación de una selección (SELECT) completa en un registro o fila puede hacerse
del siguiente modo:
SELECT campos INTO variables FROM …

En esta sentencia se ponen los campos a obtener y las variables que recibirán los valores, ambos
separados por coma (,). Se debe tener en cuenta los tipos de datos de los campos que se
devuelven y los tipos de las variables que lo reciben. Al usar esta sintaxis, existe una variable
especial llamada FOUND de tipo booleano, que puede usarse inmediatamente después de
SELECT .. INTO .. para comprobar si una asignación ha tenido éxito.
El empleo de la variable FOUND está ligado al uso de estructuras condiciones que tienen la forma
conocida de otros lenguajes:
IF expresión_booleana THEN
sentencias
[ELSE sentencias]
END IF;

En el siguiente ejemplo de bloque, se emplea una estructura condicional para comprobar la


existencia de una persona y en caso de no encontrarla devuelve una excepción (EXCEPTION)
que detiene la ejecución del código automáticamente. Observe como el mensaje de la excepción
emplea el símbolo % que luego será sustituido por el valor después de la coma (,) 'Maria'
DECLARE
tupla Persona%ROWTYPE;
BEGIN
SELECT * INTO tupla FROM Persona WHERE nombre = 'Maria';
-- Al declarar una variable de tipo fila, si la selección devuelve múltiples filas, se
-- lanzará una excepción.
IF NOT FOUND THEN – SI no ENCUENTRA datos ENTONCES
RAISE EXCEPTION 'Persona % no encontrado', 'Maria';
END IF;
END;

Universidad de las Ciencias Informáticas (UCI),


Carretera a San Antonio de los Baños Km 2 ½,
Torrens, Boyeros, La Habana, Cuba.
EL LENGUAJE PL/PGSQL EN POSTGRESQL

En la sintaxis de la excepción pueden ser usados varios símbolos (%), siempre indicando sus
respectivos valores separados por comas en el mismo orden de aparición. También se pueden
emitir notificaciones (RAISE NOTICE) las cuales no detienen la ejecución del código.
Otra de las estructuras que son permitidas dentro de un bloque son las repetitivas o bucles,
utilizadas para iterar sobre un conjunto de datos determinados y hacer alguna operación con ellos.
Existen varias definiciones de bucles:
LOOP
sentencias Bucle no condicional que ha de ser terminado de forma explícita,
EXIT WHEN condición mediante una sentencia EXIT.
END LOOP;
WHILE condición
LOOP Bucle condicional que se ejecuta mientras la evaluación de
sentencias expresión sea cierta.
END LOOP;
Bucle que itera sobre un rango de valores enteros. La variable se
crea automáticamente de tipo entero, y existe solo dentro del
FOR variable IN [REVERSE] bucle. L1 y L2 dan el límite inferior y superior del rango y son
L1 .. L2 BY [expresión] evaluados solo cuando se entra en el bucle. REVERSE, si es
LOOP especificado, invierte los límites inferiores y máximo del bucle. El
sentencias valor por defecto del paso de la iteración es siempre 1, no
END LOOP; obstante puede ser modificado utilizando el comando BY
[expresión], el valor asignado a expresión definiría el nuevo paso
de la iteración.
FOR variable IN sentencia_SELECT
A la variable se le asigna todas las filas resultantes de la cláusula
LOOP
de SELECT, y las sentencias se ejecutan para cada una de ellas.
Sentencias
Si el bucle se termina con una sentencia EXIT, la última fila
[EXIT WHEN condición]
asignada es aún accesible después del bucle.
END LOOP;

El siguiente ejemplo devuelve los números pares del 0 al 10, para las tres primeras variantes de
bucles. La cuarta variante será expuesta en los ejemplos del siguiente apartado.
DO $$ DO $$
DECLARE DECLARE
cont INTEGER := 0; cont INTEGER := 0; DO $$
BEGIN BEGIN BEGIN
LOOP WHILE cont<10 FOR cont IN 0..10 BY 2 LOOP
cont:=cont+2; LOOP RAISE NOTICE '%', cont;
RAISE NOTICE '%', cont; cont:=cont+2; END LOOP;
EXIT WHEN cont = 10; RAISE NOTICE '%', cont; END; $$
END LOOP; END LOOP;
END; $$ END; $$

Universidad de las Ciencias Informáticas (UCI),


Carretera a San Antonio de los Baños Km 2 ½,
Torrens, Boyeros, La Habana, Cuba.
EL LENGUAJE PL/PGSQL EN POSTGRESQL

FUNCIONES
Estos objetos están programados con un lenguaje procedural específico. Pueden facilitar la
administración de la base de datos y la visualización de la información contenida en ella. Una
función, se puede ejecutar desde una aplicación, posibilita el uso de variables, funciones internas
del SGBD, así como estructuras para implementar ejecuciones condicionales y ciclos. En las
funciones son válidas las sentencias del DDL (CREATE, ALTER, DROP).
Ventajas
• Posibilita ejecutar una serie de instrucciones SQL en una única función.
• Permite realizar llamadas a otras funciones, simplificando instrucciones complejas.
• Se compila en el servidor al ser creada; por tanto, se ejecuta con mayor rapidez que las
instrucciones SQL individuales.
• Al estar almacenadas en el servidor de BD tiene acceso directo a los datos y sólo necesita
enviar el resultado final al usuario.
• Permiten que la lógica del negocio se encuentre almacenada en la base de datos, simplificando
la gestión de los datos. Se reduce la probabilidad de que los datos sean corrompidos por el
uso de programas clientes defectuosos o erróneos.
Desventajas
• Conlleva a los desarrolladores a incluir la lógica de negocio al SGBD, lo cual no es muy
aconsejable, puesto que se crea una alta dependencia del SGBD.
Una función en el lenguaje procedural por lo general tiene la sintaxis siguiente:
CREATE [OR REPLACE] FUNCTION nombre_función ([lista_parámetros]) RETURNS tipo_retorno
AS
$$
[BLOQUE]
[RETURN expresión]
$$
LANGUAGE 'plpgsql';

nombre_función: es el nombre de la función a crear.


lista_parámetros: todos los parámetros a utilizar separados por coma (,) y definidos de la forma:
o [tipo de parámetro]: IN, OUT, o INOUT, por defecto si no se declara es IN.
o [nombre del parámetro]: Es el nombre de la variable a pasar por parámetro.
o tipo de datos: a utilizar para el parámetro definido.
tipo_retorno: el tipo de datos que va a devolver la función.
Cuerpo de la función compuesto por:
BLOQUE: sentencias en bloque como los visto anteriormente.
expresión: de retorno, del mismo tipo declarado anteriormente.
Por último el lenguaje a emplear en este caso plpgsql.

El acceso a los parámetros, puede ser mediante el símbolo $ seguido de un número que denota
la posición del mismo o a partir de sus nombres como en otros lenguajes conocidos.

Por ejemplo: $1 indica hacia el 1er parámetro pasado y $3 indica hacia el 3ero.

Algunos ejemplos de funciones pueden ser consultados en el material Implementando


Funciones.

Universidad de las Ciencias Informáticas (UCI),


Carretera a San Antonio de los Baños Km 2 ½,
Torrens, Boyeros, La Habana, Cuba.
EL LENGUAJE PL/PGSQL EN POSTGRESQL

CURSORES
Una de las estructuras de control de datos que puede ser empleada como parte de una función
son los conocidos cursores. Estos permiten operar sobre los registros resultantes de una consulta
SELECT.
De manera general los cursores amplían el procesamiento de los resultados de una consulta
porque:
• Permiten situarse en filas específicas del conjunto de resultados.
• Recuperan una fila o bloque de filas de la posición actual en el conjunto de resultados.
• Aceptan modificaciones de los datos de las filas en la posición actual del conjunto de
resultados.
• Aceptan diferentes grados de visibilidad para los cambios que realizan otros usuarios en la
información de la base de datos que se presenta en el conjunto de resultados.
Los cursores se utilizan principalmente en procedimientos almacenados o funciones,
desencadenadores y secuencias de comandos de SQL, a fin de dejar disponible el contenido de
un conjunto de resultados para otras instrucciones SQL.
Los cursores se procesan en 4 pasos:
1. Declarar el cursor: como parte del DECLARE de la función para crear una variable de este
tipo solo se debe utilizar una de las siguientes sintaxis:
nombre_cursor CURSOR FOR (SELECT … FROM … ORDER BY …);
o
nombre_cursor refcursor;

Las dos sintaxis declaran cursores del tipo de datos refcursor. Sin embargo, la primera crea un
cursor específico para la consulta asociada, mientras que con la segunda este puede ser usado
con cualquier consulta que se le asocie cuando sea abierto.
2. Abrir el cursor: una vez inicie la función (BEGIN) en dependencia del tipo de declaración se
abrirá empleado:
OPEN nombre_cursor;
o
OPEN nombre_cursor FOR (SELECT … FROM … ORDER BY …);

Abrir el cursor significa reservar memoria suficiente para el cursor, ejecutar la sentencia
SELECT a la que se refiere el cursor y colocar el puntero antes de la primera fila.
3. Procesar el cursor. para esta tarea, se emplean las instrucciones FETCH y MOVE, ambas
permiten colocar el cursor en una posición y recorrerlo en una dirección definida, registro a
registro hasta que el puntero llegue al final (hasta que el cursor esté vacío). La diferencia radica
en que FETCH permite acceder los datos desde una variable, mientras que MOVE solo permite
conocer la posición.
FETCH [ dirección { FROM | IN } ] nombre_cursor INTO variable;

Cada vez que se ejecuta el comando FETCH, se obtiene la próxima fila correspondiente en el
sentido que se especifica en la opción dirección y su contenido lo almacena en variables. Por

Universidad de las Ciencias Informáticas (UCI),


Carretera a San Antonio de los Baños Km 2 ½,
Torrens, Boyeros, La Habana, Cuba.
EL LENGUAJE PL/PGSQL EN POSTGRESQL

ello se requiere usar bucles cuando se desea procesar un conjunto de filas de la consulta
asociada al cursor.
Al emplear la sentencia MOVE
MOVE [ dirección { FROM | IN } ] nombre_cursor;

se puede referenciar la posición del cursor con la fila de la tabla de donde proviene, para
eliminar o actualizar los datos, empleando la opción CURRENT OF nombre_cursor, por
ejemplo:
DELETE FROM nombre_tabla WHERE CURRENT OF nombre_cursor;
UPDATE nombre_tabla SET columna=expresión WHERE CURRENT OF nombre_cursor;

La opción dirección indica la próxima fila a seleccionar y su valor puede ser: NEXT, PRIOR,
FIRST, LAST, ABSOLUTE cantidad, RELATIVE cantidad, ALL, FORWARD [cantidad | ALL] o
BACKWARD [cantidad | ALL]. La omisión de esta cláusula implica que el gestor asuma por
defecto el valor NEXT para la misma.
NEXT: selecciona la fila siguiente.
PRIOR: selecciona la fila anterior.
FIRST: selecciona la primera fila de la consulta (es lo mismo que: ABSOLUTE 1).
LAST: selecciona la última fila de la consulta (es lo mismo que: ABSOLUTE -1).
ABSOLUTE cantidad: selecciona la n-ésima fila de la consulta. Si cantidad es negativo se
selecciona la n-ésima fila contando a partir de la última.
RELATIVE cantidad: selecciona la n-ésima fila que sigue a la fila actual. Si cantidad es negativo
se selecciona la n-ésima fila que precede a la fila actual. RELATIVE 0 selecciona la fila actual.
ALL: selecciona todas las filas siguientes (es lo mismo que FORDWARD ALL).
FORWARD [cantidad | ALL]: en el caso de cantidad, selecciona las n filas siguientes. En el
caso de ALL selecciona todas las filas siguientes. De lo contrario es igual que NEXT.
BACKWARD [cantidad | ALL]: en el caso de cantidad, selecciona las n filas anteriores. En el
caso de ALL selecciona todas las filas anteriores. De lo contrario es igual que PRIOR.
4. Cerrar el cursor: en este paso se libera la memoria que ocupa y se impide su
procesamiento. Para realizar esta operación se utiliza:
CLOSE nombre_cursor;

Tras cerrar un cursor este podría ser abierto de nuevo (Paso 2) y volvería a ejecutar la
consulta asociada.

Ejemplos de cómo utilizar un cursor pueden ser consultados en el material Implementando


Cursores.

Universidad de las Ciencias Informáticas (UCI),


Carretera a San Antonio de los Baños Km 2 ½,
Torrens, Boyeros, La Habana, Cuba.
EL LENGUAJE PL/PGSQL EN POSTGRESQL

DISPARADORES (TRIGGER)
Los disparadores o trigger son objetos que permiten ejecutar funciones de forma automática
dentro del gestor de base de datos, sin necesidad de que sea el usuario quien mande a ejecutar
una operación determinada. Su nivel de autonomía potencia las ventajas de las Funciones antes
mencionadas.
Un disparador es una acción en cadena que empieza antes o después de la ocurrencia de un
evento específico (INSERT, DELETE, UPDATE, TRUNCATE) sobre una tabla específica. Su uso
está muy vinculado con la realización de acciones para auditar y monitorear las actividades de
cambio de datos dentro de una base de datos.
Ventajas de los disparadores:
• Pueden consultar otras tablas e incluir sentencias SQL complejas.
• Son especialmente útiles para exigir reglas o requisitos complejos.
• Son útiles para exigir la integridad referencial, que conserva las relaciones definidas entre
tablas cuando se agregan, actualizan o eliminan filas en esas tablas.
• Son automáticos, se activan al efectuarse modificaciones en los datos de la tabla, como una
entrada manual o una acción de la aplicación.
• Pueden realizar cambios en cascada a través de tablas relacionadas de la base de datos, al
igual que cuando se define las cláusulas ON DELETE y ON UPDATE al definir restricciones
de integridad referencial al crear tablas.
• Pueden exigir restricciones más complejas que las definidas con restricciones CHECK.
• Ofrecen un mayor control sobre una Base de Datos.
Desventajas:

• Hay que definir con anticipación la tarea que realizará (función asociada).
• Peligro de pérdida en reorganizaciones al realizar reinserción de datos al modificar.
• No se pueden utilizar en tablas temporales.

La definición de un disparador consta de dos partes:

1. Una función asociada, que se ejecuta en respuesta al o los eventos que se controlen.

La función asociada es similar a las estudiadas con anterioridad; pero tiene la característica de
que su tipo de dato de retorno siempre va a ser trigger. Además, dependiendo de las acciones del
disparador, el parámetro del RETURN dentro del cuerpo de la función puede variar y es obligatorio.
La sintaxis genérica de esta función sería entonces:
CREATE OR REPLACE FUNCTION nombre_función () RETURNS TRIGGER AS $$
[DECLARE variables]
BEGIN

RETURN párametro;
END;
$$
LANGUAGE 'plpgsql';

2. La definición formal del disparador que indica:

Universidad de las Ciencias Informáticas (UCI),


Carretera a San Antonio de los Baños Km 2 ½,
Torrens, Boyeros, La Habana, Cuba.
EL LENGUAJE PL/PGSQL EN POSTGRESQL

o cuándo y a qué tipo de evento se responderá (para responder a más de un evento,


estos se separan usando el operador lógico OR).
o sobre qué tabla se esperarán los eventos.
o qué procedimiento (función) se realizará de manera automática.

CREATE TRIGGER nombre_trigger


AFTER | BEFORE INSERT OR UPDATE OR DELETE OR TRUNCATE
ON nombre_tabla
FOR EACH ROW | STATEMENT
EXECUTE PROCEDURE nombre_función();
Existen dos tipos de disparadores especiales debido a los beneficios que brindan.
Disparadores de columnas: Ejecutados cuando una o varias columnas definidas por el usuario son
actualizadas. Este tipo de disparador le permite al desarrollador no tener que utilizar la lógica
condicional y la comparación de valores en la función asociada. Solo se emplean en disparadores
que controlan única y exclusivamente un evento UPDATE (único evento que trabaja con
columnas). Para definir este disparador solo se agrega a la sintaxis anterior OF nombre_columna
después del UPDATE.
Disparadores condicionales: Con este tipo de disparador se puede especificar una condición en la
propia definición formal y solo se activará si la condición definida durante su creación se cumple.
El desarrollador se ahorra el tener que usar una condición IF...THEN dentro de la función. De esta
forma se reduce considerablemente el número de disparadores a ejecutar (mejor rendimiento y
disminución del uso de CPU en el servidor de BD). Para definir este disparador de adiciona a la
sintaxis WHEN (condición) antes del EXECUTE.
Una vez más está aprendiendo a crear objetos que solo se comprueban sintácticamente. Para
comprobar el funcionamiento de un disparador y su función asociada debe ejecutar un evento del
mismo tipo que se controla (INSERT, UPDATE, DELETE, TRUNCATE).
PostgreSQL maneja variables especiales al momento de ejecutar un disparador. Estas suelen ser
útiles si se tiene en cuenta que una función puede ser utilizada por más de un disparador. Algunas
de estas son:
NEW: almacena los nuevos valores de la tupla que se está modificando.
OLD: almacena los valores antiguos de la tupla que se está modificando.
TG_OP: indica qué evento está ocurriendo.
TG_NAME: contiene el nombre del disparador ejecutado actualmente.
TG_WHEN: momento en que se ejecutó el disparador BEFORE o AFTER, dependiendo de la
definición formal.
TG_TABLE_NAME: nombre de la tabla que provocó la ejecución del disparador.

De ellas las más empleadas son NEW y OLD. Ambas, brindan la posibilidad de acceder a los datos
que se almacenan dentro de los eventos que se controlan, es por ello su empleo depende del
evento. En la siguiente tabla se observan los valores a almacenar según el evento:

Universidad de las Ciencias Informáticas (UCI),


Carretera a San Antonio de los Baños Km 2 ½,
Torrens, Boyeros, La Habana, Cuba.
EL LENGUAJE PL/PGSQL EN POSTGRESQL

Eventos/Variables NEW OLD


Valores que serán insertados cuando NULL, no existen valores precedentes.
INSERT
complete la orden.
Nuevos valores que serán escritos Valores originales de la fila, antes de
UPDATE
cuando complete la orden. actualizar.
DELETE NULL, no existen nuevos valores Valores originales, antes del borrar.

Los ejemplos de cómo dotar a una BD de un comportamiento más activo, al emplear un disparador,
pueden ser consultados en el material Implementando Disparadores.

Antes de terminar, debes conocer que los objetos estudiados (Funciones y Disparadores) pueden
ser eliminados haciendo uso del comando DROP del lenguaje DDL. Por ejemplo:

DROP TRIGGER nombre_trigger ON table;

DROP FUNCTION nombre_función();

ORIENTACIONES FINALES
• Al término de esta Lección usted está en condiciones de realizar la actividad práctica
Trabajando con Funciones y Disparadores correspondiente al Tema 2, disponible en la
plataforma

• Una vez concluida la actividad práctica realice el Cuestionario Evaluativo del Tema 2

Universidad de las Ciencias Informáticas (UCI),


Carretera a San Antonio de los Baños Km 2 ½,
Torrens, Boyeros, La Habana, Cuba.
EL LENGUAJE PL/PGSQL EN POSTGRESQL
Información de autoría

Obra bajo licencia Creative Commons 4.0 “Reconocimiento – NoComercial-Compartir Igual”:


http://creativecommons.org/licenses/by-nc-sa/4.0/
Se puede copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las
siguientes condiciones:
• Reconocimiento a los autores.
• No se permite el uso comercial.
• Se permiten obras derivadas siempre que mantengan la misma licencia que el original.

Sobre los autores:


Profesor de la Universidad de las
Ciencias Informáticas. Máster en
M. Sc. Yaniel Lázaro Aragón
Educación a Distancia e Ingeniero en
Barreda
Ciencias Informáticas. Su actividad
Profesor Asistente
docente de pregrado y posgrado está
[email protected]
dirigida a la enseñanza de Bases de
Datos.
Profesora de la Universidad de las
Ciencias Informáticas. Ingeniera en
Ing. Yaili Ledea Velázquez
Ciencias Informáticas. Su actividad
Profesora Asistente
docente de pregrado y posgrado está
[email protected]
dirigida a la enseñanza de Bases de
Datos.

Universidad de las Ciencias Informáticas (UCI),


Carretera a San Antonio de los Baños Km 2 ½,
Torrens, Boyeros, La Habana, Cuba.

También podría gustarte