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


Insert eller update

Postades av 2005-03-21 11:28:46 - Benny Jonsson, i forum sql-server/msde, Tråden har 3 Kommentarer och lästs av 1353 personer

Någon som har ett alternativt förslag till hur man löser följande update / insert på ett annat sätt. Koden funkar på vissa SQL-servrar men inte andra :(

<code>
CREATE PROCEDURE [spInsUp]
(@id [int],
@nvcName [nvarchar](50))
AS

IF EXISTS(SELECT [id] FROM tblName WHERE [id] = @id)
BEGIN
UPDATE [tblName]

SET [nvcName] = @nvcName
WHERE
( [id] = @id)
return @id
END
ELSE
BEGIN
INSERT INTO [tblName]
( [nvcName])
VALUES
( @nvcName)
return @@identity
END
</code>


Svara

Sv: Insert eller update

Postades av 2005-03-21 13:09:09 - Mikael Sand

Jag kan inte se några direkta fel i din procedur men vad menar du med att det inte funkar på "vissa" servrar?

Det kanske kan vara bra att istället för att använda en return-parameter använda SELECT istället. Det brukar jag göra.

Ex:
<code>
...
if exists (Select * from tbl_Users Where UserId = @UserId) begin
-- Gör update
SELECT @UserId as Result
end
else begin
-- Gör insert
SELECT @@identity as Result
end
...
</code>

Naturligtvis använder du inte returparametern för att ta reda på resultatet.

//Mikael Sand


Svara

Sv: Insert eller update

Postades av 2005-03-22 01:54:00 - Göran Andersson

Det finns ju lite olika sätta att göra samma sak.

Du kan använda count för att kolla om posten finns:

create procedure spInsUp

@id int,
@nvcName nvarchar(50)

as

set nocount on

declare @cnt int

select @cnt = count(*)
from tblName
where id = @id

if @cnt = 0 begin

	insert into tblName (nvcName)
	values (@nvcName)

	set @id = scope_identity()

end else begin

	update tblName
	set nvcName = @nvcName
	where id = @id

end

return @id


Ifall posten oftast finns så kan du köra update varje gång och använda rowcount för att kolla om posten fanns:

create procedure spInsUp

@id int,
@nvcName nvarchar(50)

as

set nocount on

update tblName
set nvcName = @nvcName
where id = @id

if @@rowcount = 0 begin

	insert into tblName (nvcName)
	values (@nvcName)

	set @id = scope_identity()

end

return @id


Svara

Sv:Insert eller update

Postades av 2005-03-22 08:58:52 - Benny Jonsson

Trevlig tanke att alltid kör update först och se hur många rader det blir. Jag har kommigt på hur jag kan göra för att mitt ursprungliga problem inte skall uppkomma ( [Process 51 generated fatal ....] )


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 620
27 953
271 709
637
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