Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

trigger za popunjavanje tabele

[es] :: MS SQL :: trigger za popunjavanje tabele

[ Pregleda: 1262 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gogi100
Goran Ljubic

Član broj: 40722
Poruke: 1064
87.116.183.*



+3 Profil

icon trigger za popunjavanje tabele12.10.2018. u 18:24 - pre 66 meseci
imam view u kome se podaci menjaju, imam identicnu tabelu kao i view. treba triggerom da popunjavam tabelu samo zapisima u kojima su polja izmenjena u view-u. zapis u tabeli treba da bude identican onom kao u view. nakon toga registrovana promena u tabeli treba da bude poslata mailom. moze li neko uputstvo?
 
Odgovor na temu

gogi100
Goran Ljubic

Član broj: 40722
Poruke: 1064
*.static.isp.telekom.rs.



+3 Profil

icon Re: trigger za popunjavanje tabele17.10.2018. u 09:18 - pre 66 meseci
pokusao sam sledece

Code:
USE [revizija1]
GO
/****** Object:  Trigger [dbo].[status]    Script Date: 10/16/2018 7:54:08 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[status] ON [dbo].[Rev]
AFTER UPDATE AS  
BEGIN
DECLARE @IDRev int,
        @NazivRevizije nvarchar(255),
        @DatumNacrt varchar(11),
        @DatumPredlog varchar(11),
        @DatumIzvestaj varchar(11),
        @CurrentUser nvarchar(255),
        @ExecutionTime datetime,
        @BodyMsg nvarchar(2100)= 'Izmene su izvrsene kod sledece',
        @subject nvarchar(255)
SELECT inserted.IDRev, 
       inserted.NazivRev, 
       inserted.DatumNacrt,
       inserted.DatumPredlog,
       inserted.DatumIzvestaj
FROM inserted

SET @IDRev = (SELECT inserted.IDRev FROM inserted)
SET @NazivRevizije = (SELECT inserted.NazivRevizije FROM inserted) 
SET    @DatumNacrt =  (SELECT inserted.DatumNacrt FROM inserted)
SET    @DatumPredlog = (SELECT  inserted.DatumPredlog FROM inserted)
SET    @DatumIzvestaj =  (SELECT inserted.DatumIzvestaj FROM inserted)
SET @CurrentUser = CONVERT(nvarchar(100), CURRENT_USER)
SET @ExecutionTime =getdate()

IF EXISTS (SELECT inserted.DatumNacrt FROM inserted)      
BEGIN

SET @BodyMsg = @BodyMsg + ' ' + @NazivRev+','+'Datum nacrta izvestaja'+ ' '+ @DatumNacrt
SET @subject = 'Izmene u datumu nacrta izvestaja'
 EXEC msdb.dbo.sp_send_dbmail  
@profile_name = 'status',  
@recipients = 'test@domain',  
@body =@BodyMsg,
@subject = @subject;
END
ELSE IF EXISTS (SELECT inserted.DatumPredlog FROM inserted)  
BEGIN

SET @BodyMsg = @BodyMsg + ' ' + @NazivRev+','+'Datum predloga izvestaja'+ ' '+ @DatumPredlog
SET @subject = 'Izmene u datumu predloga izvestaja'
 EXEC msdb.dbo.sp_send_dbmail  
@profile_name = 'status',  
@recipients = 'test@domain',  
@body =@BodyMsg,
@subject = @subject;
END
ELSE IF EXISTS (SELECT inserted.DatumIzvestaj FROM inserted) 
BEGIN

SET @BodyMsg = @BodyMsg + ' ' + @NazivRev+','+'Datum izvestaja'+ ' '+ @DatumIzvestaj
SET @subject = 'Izmena u datumu Izvestaja'
 EXEC msdb.dbo.sp_send_dbmail  
@profile_name = 'status',  
@recipients = 'test@domain',  
@body =@BodyMsg,
@subject = @subject;
END

BEGIN
 
  INSERT INTO [status-azuriranja]  
 (IDRev,NazivRev,DatumNacrt,@DatumPredlog,@DatumIzvestaj,CurrentUser,ExecutionTime)
  VALUES (@IDRevizija, @NazivRevizije,@DatumNacrt,@DatumPredlog,@DatumIzvestaj,@CurrentUser,@ExecutionTime)
 END
END


Medjutim, salje mi mejlove ali svih polja, ne samo polja koja su azurirana, kao da IF EXISTS (SELECT inserted.DatumNacrt FROM inserted) ne radi. Pokusao sam sa IF (UPDATE(DatumNacrt)), nista.
Sta da radim
 
Odgovor na temu

[es] :: MS SQL :: trigger za popunjavanje tabele

[ Pregleda: 1262 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.