lunes, 7 de enero de 2008

trigges Campeonato




BDCampeonato

USE Master
GO

DROP DATABASE BDCampeonato
GO

CREATE DATABASE BDCampeonato
GO

USE BDCampeonato
GO

CREATE TABLE TEquipo
(
CodEquipo CHAR(3) PRIMARY KEY,
Equipo CHAR(30)
)

CREATE TABLE TJugador
(
CodJugador CHAR(3) PRIMARY KEY,
Jugador CHAR(30),
CodEquipo CHAR(3),
FOREIGN KEY (CodEquipo) REFERENCES TEquipo
)

CREATE TABLE TRonda
(
CodRonda CHAR(3) PRIMARY KEY,
Estadio CHAR(30)
)

CREATE TABLE TPartido
(
CodPartido CHAR(3) PRIMARY KEY,
Fecha DATETIME,
CodRonda CHAR(3),
FOREIGN KEY (CodRonda) REFERENCES TRonda
)
CREATE TABLE TJugadorPartido
(
CodJugador CHAR(3),
CodPartido CHAR(3),
PRIMARY KEY(CodJugador,CodPartido),
FOREIGN KEY(CodJugador) REFERENCES TJugador,
FOREIGN KEY(CodPartido) REFERENCES TPartido,
goles INT
)



CREATE TABLE TPuntajes
(
CodEquipo CHAR(3),
CodPartido CHAR(3),
CodRonda CHAR(3),
Goles INT ,
Puntos INT,
PRIMARY KEY(CodEquipo,CodPartido)
)

-- crear trigger que envia un mensaje al agregar

DROP TRIGGER tr_Mensaje1

CREATE TRIGGER tr_Mensaje1
ON TJugador
FOR INSERT
AS
BEGIN
DECLARE @CodEquipo CHAR(3)
SELECT @CodEquipo= CodEquipo FROM inserted
RAISERROR('SE HA REGISTRADO UN NUEVO JUGADOR EN EL EQUIPO : %s ',16,1,@CodEquipo)
END

INSERT INTO TEquipo VALUES('E01','OLIMPICO')
INSERT INTO TEquipo VALUES('E02','DINAMO')
INSERT INTO TEquipo VALUES('E03','ESPARTACO')

INSERT INTO TJugador VALUES ('J01', 'ROJAS','E01')
INSERT INTO TJugador VALUES ('J02', 'RIOS','E01')
INSERT INTO TJugador VALUES ('J03', 'RISCO','E01')
INSERT INTO TJugador VALUES ('J04', 'SALAS','E02')

-- Crear un nuevo trigger que, muestre en forma de mensaje el código
-- y el de nombre del equipo del jugador que acaba de ingresarse a la base de datos.

drop trigger tr_Mensaje2

CREATE TRIGGER tr_Mensaje2
ON TJugador
FOR INSERT
AS
BEGIN
DECLARE @CodEquipo CHAR(3), @Equipo CHAR(30)
SELECT @CodEquipo= CodEquipo FROM inserted
SELECT @Equipo= Equipo FROM TEquipo
WHERE CodEquipo=@CodEquipo
RAISERROR('SE HA REGISTRADO UN NUEVO JUGADOR EN EL EQUIPO CON CODIGO: %s Y NOMBRE: %s ',16,1,@CodEquipo,@Equipo)
END


INSERT INTO TJugador VALUES('J10','ARAMAYO','E03')

-- Crear un trigger con la operación eliminar.

CREATE TRIGGER tr_SiElimina
ON TJugador
FOR DELETE
AS
BEGIN
PRINT ('SE ACABAN DE ELIMINAR A LOS SIGUIENTES JUGADORES !!!!')
SELECT * FROM deleted
END

DELETE FROM TJugador WHERE CodJugador = 'J10'

-- Desarrollar un trigger que no permita modificar el nombre del jugador
-- de la tabla jugador:

CREATE TRIGGER tr_NoModificar
ON TJugador
FOR update
AS
if update(Jugador)
begin
print ' NO PUEDE CAMBIAR EL NOMBRE DEL JUGADOR '
ROLLBACK
END

-- probar el trigger
UPDATE TJugador
SET Jugador='bbb'
WHERE CodJugador ='J01'

-- Desarrollar un trigger que no permita insertar puntos, si “puntos”
-- es un valor negativo en la tabla puntajes.
DROP TRIGGER tr_NoNEGATIVO
go

CREATE TRIGGER tr_NoNEGATIVO
ON TPuntajes
FOR insert
AS
if (select Puntos from inserted)<0 coderror =" 0," mensaje =" '">

No hay comentarios: