ShoppingCart problem - problem med samtidig køb af en enestående produkt
Hej - Jeg er ved at oprette en webshop i asp.net 2 og sql 2005.Da mine produkter er unique, skal jeg forhindre, at 2 kunder samtidig kan købe et og det samme produkt.
Jeg har tænkt mig at gøre det, da man trykke på 'Køb produkt' (der lægger produktet i indkøbskurv). En SP skal tjekke om ProduktID'et ikke allerede står i ShoppingCart tabel, og hvis ikke, så må det oprette en ny post i ShoppingCart tabel. Ellers må det gerne melde fejl (fejlhåndtering kan jeg evt. behandles i webformen).
Er der nogen, der har haft eftaring med dette problem (forhindring af samtidig køb af en og det samme produkt) og kan hjælpe mig ved dette?
Ellers har jeg 2 tabeller, ShoppingCart og Produkt, hvor ProduktID er PK i Produkt tabel og FK i ShoppingCart tabel.
Mine tabeller:
-------------
Produkt betår af: ProduktId(int), ProduktNavn(varchar) og flere andre felter..
ShoppingCart består af: CartId(char (36)), ProduktId(int), DateAdded(GetDate())
Jeg har lavet en SP der skulle evt. tager sig at denne her, men det virker kun, hvis CartId i ShoppingCart tabel findes allerede og ikke for en ny CartID (dvs en ny samtidig købende kunde, der få tildelt et nyt CartId (Guid)).
Min SP der ikke virker:
----------------------
ALTER PROCEDURE ShoppingCartAddItem
@CartID char(36),
@ProduktID int
AS
BEGIN
--Følgende 3 linie returnerer ProdukID, der ikke findes i ShoppingCart -> ProduktID felt
SELECT ProduktID AS pidProd FROM Produkt
EXCEPT
SELECT ProduktID AS pidShop FROM ShoppingCart
IF EXISTS (SELECT ProduktNavn FROM Produkt WHERE ProduktID=@ProduktID)
INSERT INTO ShoppingCart (CartID, ProduktID, DateAdded)
VALUES (@CartID, @ProduktID, GETDATE())
END