/ / Trigger update i obsługa wartości pustych - sql-server-2008

Aktualizacja wyzwalacza i obsługa wartości null - sql-server-2008

Mam wyzwalacz, który pobiera stare wartości zoryginalna tabela i umieść te wartości w jednej komórce w innej tabeli, z wyjątkiem daty i użytkownika, po wystąpieniu jakichkolwiek aktualizacji oryginalna tabela ma atrybuty o wartości null, gdy surowe jest wstawiane jak (aktualizacja i użytkownik aktualizacji), więc gdy ta surowa jest aktualizowana te dwa atrybuty zostaną zaktualizowane do bieżącej daty, a użytkownik, który dokonał aktualizacji, więc wyzwalacz powinien uzyskać te dwa parametry, gdy mają wartość null, powinien uzyskać wstawione wartości, a gdy nie są zerowe, powinny uzyskać nowe wartości, jednak wyzwalacz ” składnia jest poprawna, ale wynik jest niepoprawny

ALTER Trigger [dbo].[OrdersUpdate] on [dbo].[Orders]
After Update
as
Declare @UpdateDate datetime, @UpdateUser uniqueidentifier
Set @UpdateDate=(Select UpdateDate from deleted)
Set @UpdateUser=(Select UpdateUser from deleted)
If @UpdateDate is null
Begin
Set @UpdateDate=(select UpdateDate from inserted)
End
Else
Set @UpdateDate=(select UpdateDate from deleted)
If @UpdateUser is null
Begin
Set @UpdateUser=(select UpdateUser from inserted)
End
Else
Set @UpdateUser=(select UpdateUser from deleted)
Insert Into UpdateRows
Select "Orders", id,@UpdateDate,@UpdateUser,
convert(nvarchar,InvoiceID,1)+"_"+
convert(nvarchar,OrderID,1)+"_"+
MatterName+"_"+
convert(nvarchar,PrintID,1)+"_"+
OrderName+"_"+
CONVERT(nvarchar,lenght,1)+"_"+
CONVERT(nvarchar,Wide,1)+"_"+
CONVERT(nvarchar,Quantity,1)+"_"+
CONVERT(nvarchar,EnterDate,101)+"_"+
CONVERT(nvarchar,EndDate,101)
From deleted

Odpowiedzi:

0 dla odpowiedzi № 1

dzięki HLGEM

Po pierwsze, nigdy nie piszesz wyzwalacza serwera sqlgdzie ustawiasz wartości parametru skalarnego na coś z wstawionego lub usuniętego. Te tabele mogą zawierać wiele wierszy. Wyzwalacz musi to uwzględnić. - HLGEM