Documentos de Académico
Documentos de Profesional
Documentos de Cultura
insert into
EMPLEADO(nombrep,inic,apellido,nss,fechan,direccion,sexo,salario,
nsssuper,nd) values
('José','B','Silva','123456789','09/01/1955','Fresnos
731,Higueras,MX','M',30000,'333445555',5)
UPDATE EMPLEADO
SET direccion = 'Turin 654, Belén,MX'
WHERE nss = '123456789'
1
Ejemplo: Eliminar de DEPENDIENTE, las mujeres
DELETE DEPENDIENTE
WHERE sexo = ‘F’
7.- Crear una vista DEP, que visualize los atributos: nombre_dependiente y parentesco de
la tabla Dependiente.
2
IMPLEMENTAR TRIGGERS
El trigger es un tipo especial de store procedure que se activa de forma controlada por
sucesos antes que por llamadas directa.. los triggers están asociados a tablas. Son una
gran herramienta para controlar las reglas de negocio más complejas que una simple
integridad referencial.
Los triggers siempre toman acción después de que la operación fue registrada en el log.
Un trigger para inserción de registros genera automáticamente una tabla en el cache con
la información que intenta añadir, y se llama INSERTED y es a través de esta tabla que se
pueden hacer comparaciones en otras tablas.
Un trigger para eliminación de registros genera automáticamente una tabla en el cache
con la información que intenta eliminar, y se llama DELETED y es a través de esta tabla
que se pueden hacer comparaciones en otras tablas.
Si se trata de un trigger para actualización se generan ambas tablas INSERTED con los
nuevos datos y DELETED con la información que será reemplazada.
Los triggers son invocados automáticamente por el SQL, en tanto que los procedimientos
almacenados son invocados por el Usuario.
BD ejemplo
3
Crear la BD EJEMPLO y ejecutar las consultas:
Consulta1 (creación de la BD)
Modicons1 (creación de tablas y claves principales)
Modicons2 (inserción de registros)
Modicons3 (creación de claves foráneas)
o
/*modicons1AVAN*/
4
go
5
/* Crea la tabla PRODUCTOS*/
create table productos
(id_fab char(3) not null,
id_producto char(5) not null,
descripción varchar(20) not null,
precio decimal(10,2) not null,
existencias integer not null)
Use ejemplo
go
alter table clientes add foreign key (rep_clie) references RepVentas
go
alter table RepVentas add foreign key(director) references RepVentas
go
alter table pedidos add foreign key (fab,producto) references productos
go
alter table pedidos add foreign key (rep) references RepVentas
go
alter table oficinas add foreign key (dir) references RepVentas
go
alter table RepVentas add foreign key (oficina_rep) references oficinas
go
Al agregar un nuevo pedido a la tabla de pedidos, se debe incrementar las ventas del
representante que concretó el pedido, así como también debe reducirse el número de
existencias.
use ejemplo
go
create trigger NuevoPedido
on pedidos
for insert
as
update RepVentas
set ventas= ventas+ inserted.importe
from RepVentas INNER JOIN INSERTED
ON RepVentas.num_empl = inserted.rep
update productos
SET EXISTENCIAS = EXISTENCIAS - INSERTED.CANT
FROM PRODUCTOS INNER JOIN INSERTED
ON PRODUCTOS.ID_FAB=INSERTED.FAB
AND PRODUCTOS.ID_PRODUCTO = INSERTED.PRODUCTO
6
Compruebe la ejecución de este trigger, con las siguientes sentencias:
al ejecutar :
id_fab id_producto descripción precio existencias
------ ----------- -------------------- ------------ -----------
101 A1 balde 10.00 100
al ejecutar :
nombre cuota ventas
--------------- ------------ ------------
Andres 2000.00 0
insert pedidos
values(4,'01/16/05',2103,104,'101','A1',30,300)
al ejecutar :
id_fab id_producto descripción precio existencias
------ ----------- -------------------- ------------ -----------
101 A1 balde 10.00 70
al ejecutar :
nombre cuota ventas
--------------- ------------ ------------
Andres 2000.00 300
7
OTRO EJEMPLO DE TRIGGER
Podemos utilizar la función PRINT para enviar un mensaje c/vez que se inserte un nuevo
valor a la fila.
PRINT “Dato insertado exitosamente.”
al ejecutar
Gracias por agregar información
1 fila afectada
1.- Implementar un check constraint que verifique que los códigos de los
representantes de ventas sean mayores que 100.