Salve a tutti,
Sono uno studente universitario, ho un piccolo problema con un progetto in SQL Server 2008.
Dovrei gestire un piccolo database per la gestione di un campionato di calcio.
Volevo creare un trigger che controllasse che non si inserisca più di 11 titolari in una formazione.
Controllando su internet ho visto questi trigger INSTEAD OF e ho provato questa soluzione:

create TRIGGER [dbo].[UndiciTitolari]
ON
[dbo].[Formazione]
INSTEAD OF INSERT
AS
BEGIN
DECLARE @Partita int;
(SELECT @Partita=Count(Giocatore.Squadra)
FROM Formazione inner join inserted
on Formazione.IdPartita = inserted.IdPartita
inner join Giocatore
on Formazione.IdGiocatore = Giocatore.TesseraFIGC
Where Formazione.Titolare = 1 and Squadra = (Select Squadra
From Giocatore inner join inserted on TesseraFIGC = IdGiocatore
where Giocatore.TesseraFIGC = inserted.IdGiocatore))

If (@Partita > 11)
Begin
RAISERROR('Impossibile inserire più di 11 titolari',10,1);

end
ELSE
Begin
INSERT INTO Formazione SELECT * FROM inserted
end
END

MA così non funziona non entra nella clausola if e inserisce sempre.

al momento ho bypassato il problema con un trigger AFTER INSERT e se @Partita > 11 faccio la delete dell'ultimo inserito.
Però vorrei capire per bene perchè questa soluzione non funziona.
Ringrazio anticipatamente chiunque mi sappia dare una delucidazione.
Grazie.