+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 2 su 2

[MsSQL] Problema creazione trigger

  1. #1
    dostoevskij non è in linea Novello
    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!
    Ultima modifica di dostoevskij; 25-01-2010 13:38 

  2. #2
    L'avatar di bumm
    bumm non è in linea Topo di biblioteca Ultimo blog: [VB2010] ComboBox ed Enumeratori
    Invece di AFTER INSERT, UPDATE provi usare INSTEAD OF INSERT
    Ecco un esempio: Trigger INSTEAD OF INSERT
    ℹ️ Leggi di più su bumm ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risolto: Problema con trigger
    Da piero50 nel forum MySQL
    Risposte: 3
    Ultimo Post: 23-07-2012, 16:34
  2. [MsSQL]Trigger con evento temporale
    Da gheldrya nel forum Microsoft SQL Server
    Risposte: 3
    Ultimo Post: 25-09-2010, 09:01
  3. [MsSQL]Consiglio su trigger per tabella
    Da Newton nel forum Microsoft SQL Server
    Risposte: 1
    Ultimo Post: 23-03-2010, 16:18
  4. [MsSQL] problemi creazioni trigger
    Da papy2 nel forum Microsoft SQL Server
    Risposte: 0
    Ultimo Post: 21-11-2007, 15:20
  5. [MsSQL]Trigger chiama .exe
    Da web_race nel forum Microsoft SQL Server
    Risposte: 0
    Ultimo Post: 25-10-2006, 11:50