Ich versuche, einen Trigger mit dieser Logik zu schreiben:ändern Wert der eingefügten Zeile einer Spalte mit Trigger
Nach Einsatz, wenn eine bestimmte Spalte = ‚Fprice_bat‘, den Wert einer anderen Spalte ‚0000‘ ändern .
Was ich bis jetzt geschrieben habe, versucht einfach einen neuen Datensatz in die Tabelle einzufügen, anstatt die eingefügte Zeile zu aktualisieren.
Meine Abfrage sieht jetzt so aus.
CREATE TRIGGER [dbo].[TR_FixBatchTimes_I]
ON [dbo].[HEADER_BAT]
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@Starttime varchar(6),
@Endtime varchar(6),
@Batchstate varchar(30),
@Batchtype varchar(30)
SELECT
@Starttime = F908,
@Endtime = F910,
@Batchstate = F914,
@Batchtype = F916
FROM
inserted
IF @Batchtype = 'FSPRICE_BAT'
BEGIN
INSERT INTO HEADER_BAT (F908, F910, F914)
VALUES (0000, 2359, 'WAIT')
END
Ich stelle mir vor, mein Fehler, weil ich „Einfügen in header_Bat“ ich anrufen und es sollte in eingefügt etwas entlang der Linien des Einsatzes sagen ... aber das Syntax ist nicht richtig.
Wie kann ich diese Abfrage die eingefügte Zeile bearbeiten, anstatt einen neuen Datensatz zur Tabelle hinzuzufügen?
ändern Sie es zu einem 'before' Trigger. Sie können die Werte ändern, BEVOR sie in die Tabelle eingefügt werden. –
Verwenden Sie einen 'INSTEAD OF' Trigger – Lamak
' Wenn ein bestimmtes Feld = 'Fprice_bat' den Wert eines anderen Feldes zu '0000' ändern 'Einsätze ändern keine Werte, sie fügen einfach neue Datensätze, Ihre Frage macht nicht viel Sinn mir. Könnten Sie es bitte etwas deutlicher erklären? –