Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Triggerproblem

Postades av 2008-03-28 14:01:12 - Staffan Thorell, i forum sql-server/msde, Tråden har 3 Kommentarer och lästs av 1128 personer

Jag har två tabeller "orderhuvud" och "orderrad" (en order har ett orderhuvud men kan ha flera orderrader). När det läggs in en order i dessa, så ska det automatiskt kollas vissa värden på orderhuvudet. Är allt ok så ska det skapas en kopia i tabellerna "orderhuvudOK" och "orderradOK". Sedan ska aktuell order tas bort från tabellerna "orderhuvud" och "orderrad". Borttaget ska ske även om ordern inte är ok.

Det känns ju ganska självklart att skapa en trigger på tabellen "orderhuvud" som först kör testen, sedan ev. skapar nödvändiga poster i "orderhuvudOK" och "orderradOK". Sist så tar den bort ordern från "orderhuvud" och "orderrad".

Problemen jag får:
1. Triggern på "orderhuvud" kickar igång innan några poster i "orderrad" hunnit skapas. Lösningen är INTE att skriva in raderna i "orderrad" först. Då blir det problem med främmande nyckel (FK) mot "orderhuvud".
2. Triggern körs innan transaktionen är avslutad. Så att radera posterna i "orderhuvud" och "orderrad" blir svårt. När jag försöker radera orderrader så blir det FK-problem. När jag enbart försöker radera orderhuvudet så visar det sig att det inte blir raderat. Antagligen för att transaktionen inte är commitad.

Någon som har någon idé hur jag ska angripa problemet? Helst skulle jag vilja undvika att ha en trigger även på tabellen "orderrad", då jag vill hålla ihop koden och behandla "allt eller inget" av ordern.


Svara

Sv: Triggerproblem

Postades av 2008-03-28 14:54:10 - Niklas Jansson

1. I min synvinkel är det inte rätt användning av en trigger. Triggers ligger i allmänhet på rad-per-rad.
2. Det är inte riktigt vettigt att orderhuvud/orderrad bara är någon slags väntetabell.

Jag skulle snarare ha gjort det i stil med:
1. Sköt urvalet helt och hållet via kod.
eller
2. Använd constraints på orderhuvudet vid insert direkt i orderhuvud. Om orderhuvudet inte är korrekt så läggs inte huvudet in, och på grund av foreign keys så kan du inte lägga in orderrader då heller.

Ett sista alternativ skulle vara att du gör som du gör nu, men ha ytterligare en tabell avsedd för triggern, och som läggs in i sist.


Svara

Sv:Triggerproblem

Postades av 2008-03-28 16:04:25 - Staffan Thorell

Jag håller med med dig, orderhuvud/orderrad används bara temporärt och man skulle nog vilja göra det på annat sätt. Men det är som det är och ligger utanför det område som jag kan påverka.
Jag kan inte heller lägga några constraints på dessa tabeller, eftersom man måste tillåta felaktiga order att lagras. De ska behandlas på liknande sätt som de som är ok (vilket jag hade utelämnat i den ursprungliga beskrivningen).

Om ingen annan har någon idé så får jag gå på din sista variant.
D.v.s. när någon har skrivit en order i orderhuvud/orderrad, så måste de skicka ett meddelande på något sätt. T.ex. lägga in ordernumret i en tredje tabell.
Det är inte exakt vad jag vill, eftersom det kräver att jag involverar externa personer. Men...


Svara

Sv: Triggerproblem

Postades av 2008-03-28 16:13:11 - Niklas Jansson

Organisationer... ;-)

Nåja. Kan du inte påverka vare sig koden som lägger in eller databasens struktur, och måste vänta tills alla orderrader är inlagda, tror jag inte du har mycket val.

Det här är ett typexempel på hatsituationer i större organisationer. Är något fel ska det fanimej rättas till, det blir billigare än horder av fullösningar.


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 617
27 953
271 709
5 724
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies