我創建了一個觸發器,用於在Aantal字段更改時發送電子郵件,但問題是它不會將刪除並插入的數據放置在電子郵件的正文中。 我被告知這是因爲刪除並插入包含多行。 請建議解決方案「獲取包含更改數據的行」。數據更改時的電子郵件觸發器
IM使用SQL Server 2008R2
CODE:
--DE TRIGGERT--
ALTER TRIGGER [dbo].[RVABestellingenAantalWijzigenTrigger]
ON [dbo].[RVA_Bestellingen]
AFTER UPDATE
AS
--Vars
DECLARE @body varchar(500)
DECLARE @BestellingID int
DECLARE @CategorieID int
DECLARE @SubCategorieID int
DECLARE @AantalOrigineel int
DECLARE @AantalNieuw int
DECLARE @LocatieNaam varchar(255)
DECLARE @ComponentNaam varchar(255)
DECLARE @CategorieNaam varchar(255)
DECLARE @SubCategorieNaam varchar(255)
DECLARE @Datum datetime
if update(Aantal) /*and (SELECT Datum FROM inserted) = cast(floor(cast(dateadd(day,1,getdate()) as float)) as datetime) */ and (convert(varchar,getdate(),108)>'11:00')
begin
--Zetten aantallen
SET @AantalOrigineel = (SELECT Aantal FROM deleted)
SET @AantalNieuw = (SELECT Aantal FROM inserted)
SET @BestellingID = (SELECT BestellingID FROM inserted)
SET @CategorieID = (SELECT CategorieID FROM inserted)
SET @SubCategorieID = (SELECT SubCategorieID FROM inserted)
--Zetten locatienaam en componentnaam
SELECT @LocatieNaam = ('RVA Aanpassingen Locatie: '+LocatieNaam), @ComponentNaam=OfficieleNaam, @Datum=Datum
FROM RVA_Bestellingen r
LEFT OUTER JOIN Locaties l on l.LocatieID = r.LocatieID
LEFT OUTER JOIN Componenten c on c.ComponentID = r.ComponentID
WHERE r.BestellingID = @BestellingID
SELECT @CategorieNaam = Categorie
FROM RVA_HoofdCategorie
WHERE HoofdCategorieID = @CategorieID
SELECT @SubCategorieNaam = Categorie
FROM dbo.RVA_SubCategorie
WHERE SubCategorieID = @SubCategorieID
--Zet boyd
SET @body = (
SELECT
'HoofdCategorie: ' + @CategorieNaam+ char(10)+char(13)
+'SubCategorie: ' + @SubCategorieNaam+ char(10)+char(13)
+ 'Componentnaam: '
+ @ComponentNaam + char(10)+char(13)
+ 'Origineel aantal: '
+ CAST(@AantalOrigineel as varchar(50)) + char(10)+char(13)
+ 'Nieuw aantal: '
+ CAST(@AantalNieuw as varchar(50)) + char(10)+char(13)
+ 'Leverdatum: ' +
+ convert(varchar(50),@Datum,105)
)
--Mailen naar Adeline
EXEC master..xp_sendmail
@recipients = '[email protected]',
@message = @body,
@subject = @LocatieNaam
end
你也可能想更改該電子郵件地址,垃圾郵件發送者抓取這樣的網站來獲取電子郵件地址 – SQLMenace 2011-05-11 13:13:15