Problema creazione trigger

lunedì 25 gennaio 2010 - 13.38

dostoevskij Profilo | Newbie

Salve a tutti, vi scrivo per chiedere aiuto per la creazione di un trigger in SQL Server. La tabella in questione è la seguente:

CREATE TABLE edizione ( id_edizione int PRIMARY KEY, data_inizio date, data_fine date, corso nchar[5] REFERENCES corso(codice_corso) )
Vorrei creare un trigger che al momento dell'insert permetta di inserire una edizione di un corso solo se la sua data di inizio è maggiore della data di fine delle altre edizioni (dello stesso corso) eventualmente già inserite.

Ho provato a scriverlo (allego il codice a fine post) ma per qualche ragione che non riesco a comprendere esso impedisce l'inserimento di qualsiasi nuova edizione, anche se non rientra nei parametri specificati sopra.

Prima prova
CREATE TRIGGER TR_date ON dbo.edizione AFTER INSERT, UPDATE AS DECLARE @data_inizio date, @data_fine date SELECT @data_inizio = inserted.data_inizio, @data_fine = edizione.data_fine FROM edizione INNER JOIN inserted WHERE edizione.corso = inserted.corso IF @data_fine >= @data_inizio BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for trigger here ROLLBACK TRAN PRINT 'Errore: una edizione deve iniziare dopo la conclusione dell altra' END GO

Seconda Prova

CREATE TRIGGER [dbo].[TR_date] ON [dbo].[edizione] AFTER INSERT, UPDATE AS DECLARE @data_inizio date, @data_fine date, @corso nchar(5) SET @data_inizio = (SELECT inserted.[data_inizio] FROM inserted) SET @corso = (SELECT inserted.[corso] FROM inserted) SET @data_fine = (SELECT edizione.[data_fine] FROM edizione WHERE corso = @corso) IF @data_fine >= @data_inizio BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for trigger here ROLLBACK TRAN PRINT 'Errore: una edizione deve iniziare dopo la conclusione dell altra' END

Grazie in anticipo per l'aiuto!

alx_81 Profilo | Guru

>Salve a tutti,
ciao
e benvenuto su dotnethell!

vorrei capire una cosa.. è voluta la scelta del tipo DATE? Sai che non comprende le ore vero? Non vorrei fosse un problema di questo tipo.
Ma è importante capire anche cosa vai ad inserire. E capire se il messaggio che ti torna è il tuo print (che non dovrebbe vedersi a causa del set nocount ad on) oppure se non ricevi nulla o un errore.. ecc.
Potresti allegare un po' di insert che ti danno il problema e l'eventuale errore ottenuto?

>Grazie in anticipo per l'aiuto!
di nulla!

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5