Yyyyyyyyyyyy bloc de notas
-
Upload
axell-slasshh -
Category
Documents
-
view
229 -
download
0
Transcript of Yyyyyyyyyyyy bloc de notas
yyyyyyyyyyyy
1.- Crear un Trigger que no permita eliminar un Alumno si es que el alumno tiene Notas, es decir, tiene registros asociados en la tabla nota para un curso. Deberá mostrar como mensaje “El alumno ………, No puede eliminarse por que tiene Notas”.
create trigger tgs_01
on alumnos after delete
as
declare @cod char(7)
select @cod=codalu from deleted
declare @c int
select @c=count(*) from notas
where codalu=@cod
if @c <>0
begin
print 'el alumno, no puede eliminarse por que tiene notas'
rollback
end
go
2.- Crear un Trigger que solo permita como máximo tener 20 alumnos por carrera, si al momento de la inserción de nuevos alumnos, este llegara a ser numero 21 en esa carrera, no se permitirá grabarlo y deberá mostrara un mensaje indicando: “El alumno ……… no puede insertarse, por haber llegado al máximo permitido por carrera”.
create trigger no_insertar_alumnos1
on alumnos after insert
as
declare @cod int
select @cod=codcar from inserted
declare @c int
select @c=count(codcar) from ALUMNOS where codcar=@cod group by codcar
if @c >=20
begin
print 'no se puede insertar alumnos excede a la cantidad permitida'
rollback
endPágina 1
yyyyyyyyyyyy
go
------------------------
3.- Crear un Trigger que no permita grabar un nuevo registro en la tabla Notas si es que los valores a ser insertados en las notas son número no comprendidos entre 0a 20. Si se tratase de insertar un valor invalido (número menor que cero o mayor que 20), deberá mostrar un mensaje indicando: “El numero…. Es invalido para ser guardado como Nota”.
create trigger tgs_03
on notas after insert
as
declare @pp int
declare @pt int
declare @ex int
select @pp=pp,@pt=pt,@ex=ex from deleted
if (@pp>=0 and @pp<=20 and @pt>=0 and @pt<=20 and @ex>=0 and @ex<=20)
begin
print 'el numero. es invalido para ser guardado como nota.'
rollback
end
4.- Crear un Trigger que no permita insertar un nuevo registro en la tabla notas, si es que se pretende insertar un código de alumno o un código de curso que no figuren en sus respectivas tablas. Al sucederse este hecho deberá mostrar un mensaje indicando que “El código del alumno ……. No Existe”, ó “El código del curso ……. No Existe”, según corresponda.
create trigger tgs_04
on notas after insert
as
declare @codalu char(7)
declare @codcar int
declare @ca int
declare @cc int
select @codalu=codalu ,@codcar=codcur from inserted
select @ca=count(*) from alumnos
Página 2
yyyyyyyyyyyywhere codalu=@codalu
select @cc=count(*) from notas
where codcur=@codcar
if (@ca=0 or @cc=0 )
begin
print 'el codigo del alumno no existe o el codigo del curso.'
end
go------------------------
Utilizando la base de datos BDBANCOS:
5.- Crear un Trigger que No permita agregar un mismo tipo de cuenta para un mismo cliente con el mismo tipo de moneda, es decir, si el cliente ya tiene una cuenta deahorros en soles, no puede volver a sacar una nueva cuenta de ahorros en soles. Si se produjese este hecho se deberá visualizar un mensaje “El cliente ………., ya dispone de una cuenta similar con la misma moneda”
create trigger tgs_05
on cuentas after insert
as
declare @cli char(5)
declare @cta char(3)
declare @c int
select @cli=cli_codigo, @cta=cod_cta from inserted
select @c=count(*) from cuentas
where cli_codigo=@cli and cod_cta=@cta
if (@c<>0)
begin
print 'usted no puede tener dos tipo de cuentas iguales'
rollback
end
go
6.- Crear un Trigger que no permita retirar más de lo que un cliente dispone en su Página 3
yyyyyyyyyyyycuenta respectiva, si esto sucediera, se deberá mostrar un mensaje, “La cantidad ….. que desea retirar es mayor a lo que dispone”
create trigger tgs_06
on movimientos after insert
as
declare @cuenta char(12)
declare @t char(1)
declare @monto numeric(10,2)
select @cuenta=num_cta,@t=tip_mov,@monto=monto
from inserted
if(@t='r') --retiro
begin
declare @saldo numeric(10,2)
select @saldo=saldo from cuentas
where num_cta=@cuenta
if(@monto>@saldo)
begin
print 'la cantidad que desea retirar es mayor a la que dispone'
rollback
end
end
7.- Crear un Trigger que permita Actualizar el Saldo de una cuenta en la tabla Cuentas por cada movimiento realizado, recuerde, que si el movimiento es de tipo deposito el saldo en la tabla Cuentas se incrementara, si el movimiento es de tipo retiro el saldo en la tabla Cuentas disminuirá para el número de cuenta respectivo.
create trigger tgs_07
on movimientos after insert
as
declare @cuenta char(12)
declare @t char(1)
declare @monto numeric(10,2)
select @cuenta=num_cta,@t=tip_mov,@monto=monto
from insertedPágina 4
yyyyyyyyyyyy
if(@t='r') --retiro
begin
update cuentas set
saldo=saldo-@monto
where num_cta=@cuenta
end
else if(@t='d') --retiro
begin
update cuentas set
saldo=saldo+@monto
where num_cta=@cuenta
end
Se agrega la columna aumento a la tabla categorias de la BD Northwind. El trigger impide aumentar el precio del producto mas de lo indicado en la categoria.
CREATE TRIGGER Restri_AumentoON dbo.ProductsFOR UPDATEAS begindeclare @n_prec moneydeclare @p_ant moneydeclare @max_aum moneydeclare @mon moneydeclare @cod intSET @n_prec=(SELECT unitprice FROM inserted)SET @p_ant=(SELECT unitprice FROM deleted)SET @cod=(SELECT categoryid FROM inserted)SET @max_aum=(SELECT aumento FROM categories WHERE categoryid=@cod)SET @mon=@n_prec-@p_antIF(@mon>@max_aum)raiserror('No puede aumntar el precio mas de lo autorizado',15,1)rollback end
----------La empresa DjQuery.Net trabaja de lunes a sábado, por lo que no se debe permitir lacreacion de uaurios los dias domingos. Cree esta restricción mediante un triggersititititito. Cree esta restricción mediante un triggersititititito.
CREATE TRIGGER tr_usuario_domingoON tabla_usuarioFOR INSERTASbegin declare @dia varchar(20) SELECT @dia = datename( DW, getdate() ) IF (@dia = 'Domingo' OR @dia = 'Sunday') begin raiserror('No se permite la creación de usuario este día. No molestes en tu vida...jamás',25,1)
Página 5
yyyyyyyyyyyy rollback endend
mostrar nombre y precio del producto que acabo de ingresar el producto es arroz y el precio es 3.4 en la tala productos
CREATE TRIGGER tr_msjON productosFOR INSERTASbegin declare @nom varchar(60) declare @precio float SELECT @nom = nombre FROM inserted SELECT @precio = precio FROM inserted print 'el nombre es ' + @nom print 'el precio es' + str(@precio) end
Página 6