Olika uppdatering av tabell beroende på vad som redan finns i tabell...
Hejsan.
Jag har en tabell med resenärer och i den finns det en flagga med vilket sovval de har.
Antalet av varje sovval som finns är begränsat och det skall bestämmas när man lägger in en ny resenär om man får sovvalet eller inte.
om antal av sovval finns kvar
sätt resenärs flagga till detta värde
annars
sätt ett annat värde
Jag skall använda detta till en hemsida jag håller på att bygga upp.
Frågan är nu finns något enkelt sätt att göra denna algoritm ovan i MySql eller om jag måste köra kontrollerna i webbscriptet (php)
Jag har testat med följande men får felmeddelande att traveler inte kan vara i update och from samtidigt
UPDATE traveler SET sleep=IF((SELECT count(*) FROM traveler)<$tot_places,IF((SELECT count(*) FROM traveler WHERE sleep=3)<$tot_tent,3,4),5) WHERE id='$rid'
OBS! Den här raden är tänkt att kolla om antal resplatser är slut eller inte utöver sovvals-koll/sättning.
Tack på förhand.
Svara
Sv: Olika uppdatering av tabell beroende på vad som redan finns i tabell...
Om nu ingen annan hittar en lösning via en SQL kod. Så kan du väl dela upp den i två?
Först en sql som tar ut antalet sovplatser som finns kvar. Och sen inserten/updaten.
/D
Svara
Sv: Olika uppdatering av tabell beroende på vad som redan finns i tabell...
Jag tror tyvärr att det inte finns något riktigt bra smidigt sätt att lösa detta, framförallt inte något i bara SQL.
Och när man går utanför SQL finns det risk att man drabbas av att någon annan tråd hinner boka en plats som nyss såg ut att vara ledig. (Självupplevt: Ibland drabbades Tågkompaniet av dubbelbokningar när norrlandståget var fullt.) För att undvika detta krävs låsning av tabellen och/eller atomära transaktioner.
Svara
Sv:Olika uppdatering av tabell beroende på vad som redan finns i tabell...
Jag skulle nog rekommendera att göra detta med SQL servers inbyggda transactionsskydd för att undvika kollideringar med andra trådar. Gärna dessutom att göra detta som en stored procedure.
// Johan
Svara
Sv: Olika uppdatering av tabell beroende på vad som redan finns i tabell...
Johan: Kolla i vilket forum du befinner dej...
Iaf, transaktioner går att få till med MyISAM databastyper (eller vilken/vilka av typerna det nu var..)
Det där med stored procedures kan du glömma i Mysql
Svara
Sv: Olika uppdatering av tabell beroende på vad som redan finns i tabell...
Hur ser tabellerna ut?
Svara
Sv:Olika uppdatering av tabell beroende på vad som redan finns i tabell...
Utan att gå in på detaljer kan jag ju ge en kortad version av tabellerna
team
-----
id (autoincremented)
mm..
traveler
------
id (autoincremented)
team_id
sleep
reserve
mm..
Svara
Sv:Olika uppdatering av tabell beroende på vad som redan finns i tabell...
Jag har en lösning för tillfället som låser tabellerna medans funktionen körs.
Det fungerar ju så länge trycket på servern inte är allt för stort. :)
Svara