Detta är antagligen helt omöjligt men jag vill ändå höra för att vara säker... En vild chansking prova om det går att använda dig av innerselect. En insert skapar en ny post, då finns det ju inget värde innan, eller?!? Det ska inte vara något problem Visst, Jag skriver INSERT men menar UPDATE. Principen blir den samma oavset om du har en insert eller update. Det finns inga triger för update för en uppdate är ju bara en delete och sedan en insert. Så om du kör en update fråga så kommer den att trigga både delete och insert triggen så principen är den samma. Det finns INSERT tiggers DELETE triggers och UPDATE triggers. Det finns två systemtabeller som du kan använda dig av i triggers. dessa är deleted och inserted.Få ut värdet som fanns innan INSERT i tigger.
Vill göra följande i en TRIGGER.
Vid INSERT kunna få ut värdet från kolumn X (alltså värdet innan INSERT) och jämföra detta med det nya värdet.
Typ OnBeforeInsert.
Sv: Få ut värdet som fanns innan INSERT i tigger.
Sv: Få ut värdet som fanns innan INSERT i tigger.
/JohanSv: Få ut värdet som fanns innan INSERT i tigger.
Följande trigger skall göra det du söker (om jag fattat vad du menar)
trigger myTrigger on test before insert as
declare @temp varchar(100)
select @temp=varde from inserted
Det du får göra är alltså att skapa en trigger med order before insert dina värden ligger sedan i den temporära tabellen inserted
Sen är det bara att göra det du vill och skapa en ny insert som trycker in värdena i den tabell som de ska in i. (med reservation för fel)
Sv:Få ut värdet som fanns innan INSERT i tigger.
Ber om ursäkt för att jag är otydlyg. Vid UPDATE ska det ju vara.Sv: Få ut värdet som fanns innan INSERT i tigger.
Sv:Få ut värdet som fanns innan INSERT i tigger.
CREATE TRIGGER Test ON Tabell FOR INSERT, UPDATE
AS
och sedan har du tillgång till Inserted och Deleted tabeller.
Du måste däremot skapa en trigger för UPDATE om den skall reagera på det.
/mickeSv: Få ut värdet som fanns innan INSERT (UPDATE) i tigger.
Vid en INSERT används bara inserted tabellen och motsvarande vid en DELETE men vid en UPDATE används bägge och deleted inehåller då det gamla värdet och inserted det nya.
/*Skapa en trigger för UPDATE*/
CREATE TRIGGER [myDataCheck] ON myTable
FOR UPDATE
AS
/*Deklarera variabler*/
DECLARE @theOldValue int
DECLARE @theNewValue int
/*Hämta det gamla värdet*/
SELECT @theOldValue = d.myDataField FROM deleted d
/*Hämta det ny värdet*/
SELECT @theNewValue = i.myDataField FROM inserted i
IF (@theOldValue > @theNewValue)
BEGIN
/*Gör något, t ex skulle en rollback kunna ske här om ogiltigt värde.*/
END