Hej! Nu förstår jag inte exakt vad du vill göra, om du bara vill logga att en ändring skedde, eller kopiera värdet eller vad. Men generellt kan man iaf säga att triggers har tillgång till två virtuella tabeller, INSERTED och DELETED, vilka innehåller de rader som påverkats av en modifiering av datan i tabellen. INSERTED innehåller det nya värdet för rader som uppdateras och/eller nya rader som lagts till, och DELETED innehåller det gamla värdet för rader som uppdaterats och/eller tagits bort. Tack för ditt svar Christoffer Hedgate. Ja, då låter det som att du förstått triggers. Däremot har du inte en korrekt normaliserad design, även om du verkar vara medveten om det och därför tänker använda triggers för att ändå upprätthålla integriteten. Får jag fråga varför du vill lagra totalt antal svar i en separat tabell och kolumn? Det går ju att räkna ut senare. Mitt exempel ovan va bara något jag tog i luften för att förtydliga mig, men samtidigt så skulle mitt tillvägagångs sätt vara så att jag skulle förvara totalt svarade i frågetabellen alltså: >Du kanske menar att summera ihop s_antal med Group By id istället? Nu ramla inte bara bitar av polletten utan hela polletten ner.Trigger update
Jag har en fundering kring trigger funktionen i MSSQL 7.
Om jag uppdaterar en tabell där tabellen heter "antal" med hjälp av storeprocedure, antal och antalbehov där ett id är i where-satsen, går det att uppdatera med hjälp av en trigger till tabell 2 när en ändring har skett till tabell "antal".
Hur får jag då med mig vilka värden som har updaterats samt hur skulle det kunna se ut.Sv: Trigger update
<code>
CREATE TRIGGER triggernamn
ON antal
FOR UPDATE
AS
BEGIN
UPDATE tabell2 SET x = y WHERE id IN (SELECT id FROM INSERTED)
END
</code>Sv:Trigger update
Känner att jag börjar närma mig mitt mål, men för att säkerställa detta så ska jag försöka vara tydligare.
Användare på hemsidan väljer att rösta på en fråga där 3 alternativ presenteras ex.
Har du löss?
Ja (radiobutton)
Nej (radiobutton)
Vet inte (radiobutton)
(Submit knapp)
Svaret skickas till en update-sida där värdet updaterar vilket val som gjordes med +1, men istället för att köra 2 update kommandon på sidan, så vill jag köra en tigger varje gång ett svar kommer in i tabellen dbTotaltantalsvar, kolumn "antal" för att registrera det totala antal svar oavsett val.
Jag försöker förstå mig på trigger och dess kraft och svagheter.Sv: Trigger update
Sv:Trigger update
id
fråga
f_antal
relation
s_id
id
svar
s_antal
Du kanske menar att summera ihop s_antal med Group By id istället?
Men skulle ditt exempel nedan kunna lösa mitt problem annars, detta förutsätter ju att posten har lagts till, då skall alltså INSERTED användas, men FROM säger ju inte från vilken tabell, eller vilka värden som skall in ?
Om jag sedan skulle i en annan situation köra en update på samma tabell kommer denna trigger då köras.
CREATE TRIGGER triggernamn
ON antal
FOR UPDATE
AS
BEGIN
UPDATE tabell2 SET x = y WHERE id IN (SELECT id FROM INSERTED)
ENDSv: Trigger update
Japp.
>Men skulle ditt exempel nedan kunna lösa mitt problem annars, detta förutsätter ju att posten har lagts till, då skall alltså INSERTED användas, men FROM säger ju inte från vilken tabell, eller vilka värden som skall in ?
INSERTED är en virtuell representation av de rader som lagts till i den tabell som refereras till i ON-klausulen när triggern skapas.Sv:Trigger update
Du har varit en klippa.
Tack för hjälpen.
Ps. visst är de bättre att använda
-Du kanske menar att summera ihop s_antal med Group By id istället?
Stänger tråden