webForumDet fria alternativet

SP Kolla och insert..

Databaser & SQL

2 svar · 292 visningar · startad av freddyk

Medlem sedan okt. 2006103 inlägg
Frågan#1

Tjena SQLare,

Behöver lite hjälp. Ska köra en INSERT i en tabell. Inga konstigheter där men jag vill även kunna se efter ifall en broschyr redan finns upplagd på lagerplatsen som jag gör en insert på. Om så är fallet ska en annan INSERT köras som skriver in att en lagerplats är delad.

Nedan kod finns i en SP i SQL 2005.

BEGIN
	INSERT INTO dbo.lagerplatsBrochure(fk_lpID,fk_brSLank,plockplats) VALUES(@lpid,@brid,@plocka)
END

Ovanstående behöver byggas på så att man förutom inserten även kollar ifall fk_lpID redan finns upplagd i tabellen dbo.lagerplatsBrochure och i så fall köra en INSERT i en annan tabell: dbo.lagerplats (dbo.lagerplats.delad = 1). Görs detta i en ny begin i samma SP eller en ny SP? Någon som har förslag?

Tacksam och Tack på förhand! :)

Medlem sedan dec. 200012 464 inlägg
#2
   if not exists(select * from dbo.lagerplatsBrochure where fk_lpID = @lpid)
      insert INTO dbo.lagerplatsBrochure(fk_lpID,fk_brSLank,plockplats) VALUES(@lpid,@brid,@plocka)
   else
-- din andra insert
Medlem sedan okt. 2006103 inlägg
#3

LarsG skrev:

   if not exists(select * from dbo.lagerplatsBrochure where fk_lpID = @lpid)
      insert INTO dbo.lagerplatsBrochure(fk_lpID,fk_brSLank,plockplats) VALUES(@lpid,@brid,@plocka)
   else
-- din andra insert

Smaskigt! Tack LarsG.

Kom fram till det med, ngt annorlunda skrivet bara:

BEGIN	
	IF EXISTS(SELECT dbo.lagerplatsBrochure.fk_lpID FROM dbo.lagerplatsBrochure WHERE dbo.lagerplatsBrochure.fk_lpID = @lpid)
		BEGIN
			INSERT INTO dbo.lagerplatsBrochure(fk_lpID,fk_brSLank,plockplats) VALUES(@lpid,@brid,@plocka)
			UPDATE dbo.lagerplats SET dbo.lagerplats.sammansatt = "1" WHERE dbo.lagerplats.LPExpID = @lpid
		END
	ELSE
		BEGIN
			INSERT INTO dbo.lagerplatsBrochure(fk_lpID,fk_brSLank,plockplats) VALUES(@lpid,@brid,@plocka)
		END
END

Tackar för det snabba svaret! :birp

261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)