Permalänk
Medlem

SQL Trigger

Hejsan,

Behöver lite hjälp med en skoluppgift:

Har 3 tabeller som ser ut som följande:

Article Nr, ArtName, Price ----------------------------- OrderLine ArtNr, OrderNr, Amount ---------------------------------- CustomerOrder Nr, CustomerName, TotalPrice ------------------------------------------

Uppgiften är följande:

Create a trigger that automatically updates the order sum (totalPrice​) in the table CustomOrder
when a new row is added in OrderLine​. The trigger should calculate the price based on article
number and amount from the added row and add this to totalPrice of the current order.

Min trigger so far:

CREATE TRIGGER TUpdateOrderSum ON OrderLine AFTER INSERT AS BEGIN UPDATE CustomOrder SET //What to do? Få priset på inserted och sedan ta totalPrice + Price.. ? END

Tacksam för all hjälp!

Permalänk
Medlem

Något sånthär? Kan va något syntaxfel

UPDATE CustomerOrder
SET TotalPrice = TotalPrice + SUM(Article .Price * inserted.Amount)
FROM CustomerOrder
JOIN inserted ON OrderNr = CustomerOrder.Nr
JOIN Article ON inserted.ArtNr = Article.Nr

Visa signatur

Intel i7 4970K, Fractal define mini, 24GB DDR3 1600mhz , 500GB SSD * 2 RAID0, GeForce 1060 6gb

Permalänk
Medlem
Skrivet av railman:

Något sånthär? Kan va något syntaxfel

UPDATE CustomerOrder
SET TotalPrice = TotalPrice + SUM(Article .Price * inserted.Amount)
FROM CustomerOrder
JOIN inserted ON OrderNr = CustomerOrder.Nr
JOIN Article ON inserted.ArtNr = Article.Nr

Verkar lira fint, hade svårt att förstå hur jag skulle få priset men nu förstår jag Tack!

Permalänk
Medlem

Undvik triggers, ofta är de en källa till prestandaproblem men också ett dålt beteende som kan ställa till det. Om du söker efter information på nätet kommer du se att de flesta sql admins håller med.

Visa signatur

Intel Core i7 8700K, MSI GeForce GTX 1080 Ti 11GB Gaming X, Samsung 960 EVO 1TB, MSI Z370 GAMING M5, Corsair 32GB (4x8GB) DDR4 3200MHz CL16 Vengeance, EVGA Supernova G3 850W

INTEL CORE I7 3930K 3.20GHZ 12MB S-2011, FRACTAL DESIGN MIDITOWER DEFINE R3, CORSAIR HX 1050W, ASUS RAMPAGE IV FORMULA, Asus STRIX GTX970, CORSAIR 16GB DDR3 DOMINATOR QUAD 1866MHZ CL9 (4X4GB) Ljud: ASUS Xonar D2X/XDT 7.1 | Elac 5.1 +förstärkare | Cambridge dacmagic plus | Astro gaming A40 | Sennheiser HD 650
You ask me if I have a god complex? Let me tell you something, I am god!

Permalänk
Inaktiv
Skrivet av IceDread:

Undvik triggers, ofta är de en källa till prestandaproblem men också ett dålt beteende som kan ställa till det. Om du söker efter information på nätet kommer du se att de flesta sql admins håller med.

Jag vet inte om man får godkänt på sin skoluppgift med det argumentet.

Med det sagt håller jag med, det är av ondo och skall väck. Man vill inte ha någon logik i databasen.

Permalänk
Medlem
Skrivet av anon81912:

Jag vet inte om man får godkänt på sin skoluppgift med det argumentet.

Med det sagt håller jag med, det är av ondo och skall väck. Man vill inte ha någon logik i databasen.

Skoluppgiften borde du klara lätt, bara söka lite, jag var mer intresserad av att ge lite info om denna detalj som kan vara bra längrefram i karriären.

Visa signatur

Intel Core i7 8700K, MSI GeForce GTX 1080 Ti 11GB Gaming X, Samsung 960 EVO 1TB, MSI Z370 GAMING M5, Corsair 32GB (4x8GB) DDR4 3200MHz CL16 Vengeance, EVGA Supernova G3 850W

INTEL CORE I7 3930K 3.20GHZ 12MB S-2011, FRACTAL DESIGN MIDITOWER DEFINE R3, CORSAIR HX 1050W, ASUS RAMPAGE IV FORMULA, Asus STRIX GTX970, CORSAIR 16GB DDR3 DOMINATOR QUAD 1866MHZ CL9 (4X4GB) Ljud: ASUS Xonar D2X/XDT 7.1 | Elac 5.1 +förstärkare | Cambridge dacmagic plus | Astro gaming A40 | Sennheiser HD 650
You ask me if I have a god complex? Let me tell you something, I am god!

Permalänk
Medlem
Skrivet av IceDread:

Skoluppgiften borde du klara lätt, bara söka lite, jag var mer intresserad av att ge lite info om denna detalj som kan vara bra längrefram i karriären.

Jag har hört att triggers kan vara lite sisådär ja, men som sagt vart detta för en skoluppgift så hade inte mycket val.