Ich habe einige Posts in Bezug auf die Aktualisierung auf einem INSERT
Trigger untersucht. Meine Frage ist ähnlich, aber ich warne meine Syntax auf der UPDATE
Aussage, besonders nicht, eine Tabelle zu verstehen, die immer als INSERTED
bezeichnet wird.SQL Server INSERT-Trigger zum Festlegen der Anfangsdatensyntax
Der Trigger-Code wird nur einige Datumsspaltenwerte auf INSERT
aktualisieren (und dank eines Codes, den ich hier von einem Ihrer Gurus gefunden habe, gibt es eine Logik für die 'shipdueDate'
Spalte).
Es gibt bereits einen erhöhten Wert für die Rechnungsnummer basierend auf einer ID-Einstellung. Wenn eine neue Zeile erstellt wird, wird die Rechnungsnummer um 1 erhöht. Dies wird jedoch für einen Administrator im Büro einfacher Um Rechnungsdaten hinzuzufügen, dachte ich, dass das Platzieren einiger Anfangswerte in den Feldern orderdate
, shipduedate
und dateinvoiced
eine einfachere Dateneingabe ermöglichen würde.
Dies ist der Code, den ich mit
im VorausCREATE TRIGGER Invoices_SetInitialDates ON dbo.Invoices FOR INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @fromDate DATETIME
DECLARE @shipDate DATETIME
DECLARE @daysToAdd int
-- We promise a 7 day turn-around on orders, so it has to
-- ship on the 8th day
SELECT @fromDate = CURRENT_TIMESTAMP, @DaysToAdd = 8
SET datefirst 1
-- code from stackoverflow to calculate the shipduedate based
-- on week days. It doesn't have any logic for holidays, but it
-- provides the Admin initial values to work with, and that she
-- can change in the new record.
SELECT @shipDate =
DATEADD(day,
@daysToAdd%5 +
CASE DATEPART(weekday,@fromDate) + @daysToAdd%5
WHEN 6 THEN 2
WHEN 7 THEN 1
ELSE 0 END,
DATEADD(week,@daysToAdd/5,@fromDate)
)
-- UPDATE statement for trigger here. I'm not sure
-- here about a table called INSERTED, or if this will
-- simply update the newly added record. This is where
-- I believe I need guidance.
UPDATE dbo.Invoices SET DateOrdered = @fromDate
,ShipDueDate = @shipDate
,DateInvoiced = @fromDate
END
GO
Dank habe kommen. Dies ist eine großartige Site mit vielen SQL Server-Talenten.
@ marc_s - Danke. Dies ist eine gute Alternative für Felder, die nur das aktuelle Datum benötigen. Das Shipduedate, wie du sagst, ist eine Berechnung und ich hoffe, dass all diese Standardwerte an einem einzigen Ort aufbewahrt werden. Trotzdem ist es geschätzt. Hoffe, das ist keine Regel brechen, aber wollte fragen, ob Sie in Nova Scotia leben? Ich frage, nur weil ich dort geboren bin. –
@CliffRobinson: Nein, nur ein großer Fan von Bluenose Land, nachdem ich dort für drei Jahre gearbeitet habe - ich wurde geboren und aufgewachsen (und lebe jetzt) in der Schweiz –