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!