Professional Documents
Culture Documents
Nombre:
Un disparador no es otra cosa que una acción definida en una tabla de nuestra base de
datos y ejecutada automáticamente por una función programada por nosotros. Esta acción se ac-
tivará, segun la definamos, cuando realicemos un INSERT, un UPDATE ó un DELETE en la
susodicha tabla.
Se crea un trigger con el comando CREATE FUNCTION, declarándolo como una fun-
ción sin argumentos y un tipo de devolución de activación. La función debe declararse sin ar-
gumentos, incluso si espera recibir los argumentos especificados en CREATE TRIGGER: se
pasan a través de TG_ARGV, como se describe a continuación.
INNER JOIN
Inner Join determinará qué filas de ambas tablas participantes se considerará para regre-
sar. La cláusula ON o USING se utiliza con la condición de unión. La cláusula ON en condición
de unión toma una expresión booleana como la toma la cláusula WHERE y hace coincidir las
columnas comunes de las tablas participantes cuando la expresión booleana evalúa true y deter-
mina qué filas deben unirse.
Por otro lado, la cláusula USING toma una lista de nombres de columna separados por
una coma, que es común en la tabla participante y realiza una combinación en la coincidencia de
cada uno de estos pares de columnas. La cláusula USING devuelve una columna común una vez
como salida y seguida por las columnas restantes y las columnas comunes aparecerán primero
cuando se use '*' con una instrucción SELECT.
Para unir una tabla a una tabla B:
Primero se debe especificar la columna en ambas tablas de las que se desea selec-
cionar datos en la cláusula SELECT
Segundo, se especifica la tabla principal, es decir, A en la cláusula FROM.
En tercer lugar, se especifica la tabla a la que se une la tabla principal, es decir, B
en la cláusula INNER JOIN. Además, pones una condición de unión después de la
palabra clave ON, es decir, A.pka = B.fka.
WHERE
ORDER BY
La cláusula ORDER BY se utiliza para ordenar los datos en orden ascendente o descen-
dente, en base a una o más columnas. Contiene la siguiente sintaxis:
telefono integer,
direccion character(50),
apellido_nombre character(30),
WITH (
OIDS=FALSE
);
OWNER TO postgres;
CREATE TABLE public.factura
fecha date,
monto_factura numeric,
iva numeric,
montototal numeric,
cedula integer,
WITH (
OIDS=FALSE
);
ALTER TABLE
public.factura
OWNER TO postgres;
numero_factura integer,
nombre_producto character(20),
precio numeric,
cantidad integer,
montototal numeric,
)
WITH (
OIDS=FALSE
);
OWNER TO postgres;
Luego se creó la función trigger insertada en una tabla para los cambios:
CURRENT_TIMESTAMP,
TG_OP.
TG_WHEN,
CURRENT_USER
);
RETURN null;
END;
$$
language ‘plpsql’;
Luego al ejercicio de factura se le agregego el Where con el cualp se puede especificar las
condiciones para la consulta "select", y el Order by quien ordena los registros que se ingresaron
en la base de datos dependiendo del criterio.
SELECT
cliente.cedula,
cliente.apellido_nombre,
cliente.telefono,
cliente.direccion,
factura_detalle.nombre_producto,
factura_detalle.precio,
factura_detalle.cantidad,
monto,
iva,
montototal
FROM
cliente
INNER JOIN factura ON factura.cedula = cliente.cedula;
INNER JOIN factura_detalle ON factura.montototal = factura_detalle.montototal;
WHERE facture_detalle.nombre_producto = Café;
SELECT
cliente.cedula,
cliente.apellido_nombre,
cliente.telefono,
cliente.direccion,
factura_detalle.nombre_producto,
factura_detalle.precio,
factura_detalle.cantidad,
monto,
iva,
montototal
FROM
cliente
INNER JOIN factura ON factura.cedula = cliente.cedula;
INNER JOIN factura_detalle ON factura.montototal = factura_detalle.montototal;
ORDER BY cliente.cedula;
El operador like nos permite facilitar la búsqueda de los clientes según el producto comprado:
SELECT
cliente.cedula,
cliente.apellido_nombre,
cliente.telefono,
cliente.direccion,
factura_detalle.nombre_producto,
factura_detalle.precio,
factura_detalle.cantidad,
monto,
iva,
montototal
FROM
cliente
INNER JOIN factura ON factura.cedula = cliente.cedula;
INNER JOIN factura_detalle ON factura.montototal = factura_detalle.montototal;
WHERE
factura_detalle.nombre_producto LIKE ‘camisa%’;