Yyyyyyyyyyyy bloc de notas

6
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 end Página 1

Transcript of Yyyyyyyyyyyy bloc de notas

Page 1: 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

Page 2: Yyyyyyyyyyyy   bloc de notas

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

Page 3: Yyyyyyyyyyyy   bloc de notas

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

Page 4: Yyyyyyyyyyyy   bloc de notas

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

Page 5: Yyyyyyyyyyyy   bloc de notas

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

Page 6: Yyyyyyyyyyyy   bloc de notas

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