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


Trigger i SQL Express 2005

Postades av 2008-02-07 10:11:21 - Oskar Stierna, i forum sql-server/msde, Tråden har 12 Kommentarer och lästs av 1098 personer

Skulle skriva en trigger som vid varje updatering av en tabell kontrollerar om ett värde överstigit 5 och
isf updatera ett annat värde till ett:

-------------------------- Update Storage After Update----------------------------------------

CREATE TRIGGER usau
ON storage
FOR UPDATE
AS
BEGIN
DECLARE

@added int,
@deleted int

SELECT
@added = palletAdded,
@deleted = palletDeleted

If (@added = @deleted)'Sätter vi dem båda till 0

begin
UPDATE storage SET palletAdded = 0, palletDeleted = 0
end

Else
if (@deleted > 4)'Sätter vi needsorting = 1

begin
UPDATE storage SET needSorting = 1
end

FROM storage s
INNER JOIN Updated u ON (u.pos = s.pos)
WHERE Updated.pos = s.pos

-----------------------------------------------------------------------------------------------------

Någon som har några tips?

Databas: SQL Express 2005
Program: Visual Studio 2005

/mvh Oskar


Svara

Sv: Trigger i SQL Express 2005

Postades av 2008-02-07 12:25:11 - Chris Klug

Vad är problemet? I min värld så kommer den där koden uppdatera alla rader i tabellen varje gång...men jag kanske tänker fel... Men det ser inte ut som om du tar hänsyn till den uppdaterade raden utan bara bara "generellt"... Men har inte ätit lunch ännu och är lite seg i huvudet så om jag yrar så ber jag om ursäkt...


Svara

Sv:Trigger i SQL Express 2005

Postades av 2008-02-11 08:36:27 - Oskar Stierna

Jo, tycker själv att denna koden borde funkar, men Visual Studio 2005 god tar den inte... =(


Svara

Sv: Trigger i SQL Express 2005

Postades av 2008-02-11 08:41:26 - Oskar Johansson

Jag tycker inte att den borde fungera, tänker på samma sak som Chris; du har ju inga where-villkor så alla rader kommer ändra värde, oavsett om de borde det eller inte..


Svara

Sv: Trigger i SQL Express 2005

Postades av 2008-02-11 14:57:13 - Oskar Stierna

FROM storage s
INNER JOIN Updated u ON (u.pos = s.pos)
WHERE Updated.pos = s.pos

Detta skrav jag ju i slutet, räcker inte det?

/mvh Oskar


Svara

Sv:Trigger i SQL Express 2005

Postades av 2008-02-11 20:50:15 - Håkan Borneland

Pröva:
<code>
SELECT
@added = palletAdded,
@deleted = palletDeleted
FROM storage s
INNER JOIN Updated u ON (u.pos = s.pos)

IF (@added = @deleted) BEGIN --Sätter vi dem båda till 0
UPDATE storage SET palletAdded = 0, palletDeleted = 0
END
IF (@deleted > 4) BEGIN --Sätter vi needsorting = 1
UPDATE storage SET needSorting = 1
END
</code>

Gäller bara syntaxen, inte logiken.

/Håkan


Svara

Sv: Trigger i SQL Express 2005

Postades av 2008-02-12 10:52:58 - Oskar Stierna

Jo det har du rätt i, men det fungerade tyvärr inte:
---------------------------------------------------------
Incorrect syntax near 'END'
---------------------------------------------------------


Svara

Sv:Trigger i SQL Express 2005

Postades av 2008-02-12 11:28:24 - Håkan Borneland

Har storage ett fält som heter needSorting och är det int?
Annars kanske det saknas ett END sist i triggern (efter IF satserna).

/Håkan


Svara

Sv: Trigger i SQL Express 2005

Postades av 2008-02-13 18:15:04 - Mikael Wedham

Du kan inte dela på din update

Det måste stå UPDATE...FROM bla bla mellan BEGIN END
Felet du får är att du har en halv sqlsats (som inleds med FROM)
därav felet (syntax nära end = strax efter...)

/micke


Svara

Sv:Trigger i SQL Express 2005

Postades av 2008-02-13 19:55:20 - Håkan Borneland

Håller inte med dig Micke.
Ser inget fel med IF satserna, eller med den UPDATE sats som körs i respektive IF.
Fast jag kan ha missat något.

/Håkan


Svara

Sv: Trigger i SQL Express 2005

Postades av 2008-02-13 21:59:01 - Mikael Wedham

Håkan.

Koden du skrivit är bara 50%
Kolla originalfrågan!

Det kan INTE stå

if ???
BEGIN
UPDATE xxxxx
END
FROM zzzz

Det måste stå
if ???
BEGIN
UPDATE xxxxx
FROM zzz
END

Annars uppdateras allt i tabellen (som en tidigare fråga gjorde gällande att det INTE skulle göras!)
och man har en föräldralös FROM i slutet.

@added int,
@deleted int

SELECT
@added = palletAdded,
@deleted = palletDeleted
FROM inserted

If (@added = @deleted)--Sätter vi dem båda till 0
begin
UPDATE storage SET palletAdded = 0, palletDeleted = 0
FROM storage s
INNER JOIN Inserted u ON (u.pos = s.pos)
end

Else if (@deleted > 4)--Sätter vi needsorting = 1
begin
UPDATE storage SET needSorting = 1
FROM storage s
INNER JOIN Inserted u ON (u.pos = s.pos)
end

OCH DESSUTOM heter tabellen inserted, även om man gör en UPDATE

/micke



EDIT:Kodjustering...


Svara

Sv:Trigger i SQL Express 2005

Postades av 2008-02-13 22:27:35 - Håkan Borneland

Mmmmm, visst är det så om man ska uppnå logiken trådskaparen eftersträvar.
Som jag skrev tidigare i ett inlägg i tråden "gäller bara syntaxen inte logiken".
Så även i detta fallet, hade bara syntaxglasögonen på mig.
I stand (logically) corrected.

/Håkan


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 731
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