Hejsan. Om nu ingen annan hittar en lösning via en SQL kod. Så kan du väl dela upp den i två? 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. 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: Kolla i vilket forum du befinner dej... Hur ser tabellerna ut? Utan att gå in på detaljer kan jag ju ge en kortad version av tabellerna Jag har en lösning för tillfället som låser tabellerna medans funktionen körs.Olika uppdatering av tabell beroende på vad som redan finns i tabell...
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.Sv: Olika uppdatering av tabell beroende på vad som redan finns i tabell...
Först en sql som tar ut antalet sovplatser som finns kvar. Och sen inserten/updaten.
/DSv: Olika uppdatering av tabell beroende på vad som redan finns i tabell...
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.Sv:Olika uppdatering av tabell beroende på vad som redan finns i tabell...
// JohanSv: Olika uppdatering av tabell beroende på vad som redan finns i tabell...
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 MysqlSv: Olika uppdatering av tabell beroende på vad som redan finns i tabell...
Sv:Olika uppdatering av tabell beroende på vad som redan finns i tabell...
team
-----
id (autoincremented)
mm..
traveler
------
id (autoincremented)
team_id
sleep
reserve
mm..Sv:Olika uppdatering av tabell beroende på vad som redan finns i tabell...
Det fungerar ju så länge trycket på servern inte är allt för stort. :)