PDF de programación - Disparadores

Imágen de pdf Disparadores

Disparadoresgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 1 de Octubre del 2017)
496 visualizaciones desde el 1 de Octubre del 2017
68,5 KB
11 paginas
Creado hace 19a (13/11/2004)
Disparadores

Álvaro Herrera

13 de noviembre de 2004

Álvaro Herrera

Disparadores

Contenidos

I Qué es un disparador
I Componentes
I La función de disparador
I Ejemplo PL/pgSQL
I Ejemplo PL/Tcl

Álvaro Herrera

Disparadores

Qué es un disparador?

I “Trigger”
I Qué hace: ejecutar una acción
I Cuándo: un evento ocurre en la base de datos
I Acciones:

I una función de disparador

I Eventos:

I INSERT
I UPDATE
I DELETE

Álvaro Herrera

Disparadores

Componentes

CREATE TRIGGER [ nombre ]

{ BEFORE | AFTER }
{ evento [ OR ... ] }

[ FOR EACH { ROW | STATEMENT } ]

EXECUTE PROCEDURE funcion(argumentos)

Álvaro Herrera

Disparadores

La función de disparador

CREATE FUNCTION nombre ( args )
RETURNS TRIGGER [ ... ]

Elementos del disparador se pasan de forma especial

I elementos del registro
I FOR EACH ROW
I NEW / OLD

I nombre de la tabla, evento, etc
I argumentos de creación

Álvaro Herrera

Disparadores

NEW, OLD

I Registros que la función recibe
I NEW

I registro insertado (INSERT)
I registro modificado (UPDATE)

I OLD

I registro antes de modificar (UPDATE)
I registro eliminado (DELETE)

I OLD
I Pueden ser modificados
I Puede retornar:

I NULL (detener la accion)
I OLD (evento DELETE)
I NEW (eventos INSERT, UPDATE)

Modificaciones sólo con disparadores BEFORE!

Álvaro Herrera

Disparadores

Ejemplo PL/pgSQL

CREATE FUNCTION verifica_empleado() RETURNS trigger
LANGUAGE plpgsql AS ’

BEGIN

IF NEW.sueldo < OLD.sueldo THEN

RAISE NOTICE ’’no bajaremos el sueldo’’;
RETURN NULL;

END IF;

IF NEW.sueldo < 0 THEN

RAISE EXCEPTION ’’% debe tener sueldo positivo’, NEW.nombre;

END IF;

NEW.ultima_fecha := ’now’;
NEW.ultimo_usuario := current_user;
RETURN NEW;

END;

’;

Álvaro Herrera

Disparadores

Ejemplo PL/pgSQL

CREATE FUNCTION actualiza_inventario() RETURNS trigger
LANGUAGE plpgsql AS ’

BEGIN

END

’;

Álvaro Herrera

Disparadores

Ejemplo PL/Tcl

CREATE OR REPLACE FUNCTION minusculas()
RETURNS trigger AS ’
foreach key $args {

if {[info exists NEW($key)]} {

set NEW($key) [string tolower $NEW($key)]

}

}
return [array get NEW]
’ LANGUAGE pltcl;

CREATE TRIGGER minusculizar

BEFORE INSERT OR UPDATE ON una_tabla
FOR EACH ROW EXECUTE PROCEDURE
minusculas(’campo_1’, ’campo_2’);

Álvaro Herrera

Disparadores

Ejemplo PL/Tcl

CREATE TABLE usuarios

(usuario_id int,

nombre text);

CREATE TABLE usuarios_audit

(usuario_id int,

nombre text,
op text,
fecha timestamp with time zone);

Álvaro Herrera

Disparadores

Ejemplo PL/Tcl

CREATE OR REPLACE FUNCTION

audita_usuarios() RETURNS trigger AS ’
spi_exec "INSERT INTO usuarios_audit

VALUES ($NEW(usuario_id),
’’[ quote $NEW(nombre) ]’’,
’’[ quote $TG_op ]’’,
now())"

return [array get NEW]

’ LANGUAGE pltcl;

CREATE TRIGGER audita

BEFORE UPDATE OR INSERT OR DELETE
ON usuarios FOR EACH ROW
EXECUTE PROCEDURE audita_usuarios();

Álvaro Herrera

Disparadores
  • Links de descarga
http://lwp-l.com/pdf7107

Comentarios de: Disparadores (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad