Avatar billede mhbech Nybegynder
21. august 2003 - 15:05 Der er 5 kommentarer og
1 løsning

Sikker select

Jeg mangler et sql kald der skal bruges til uddeling af præmier. Det skal være muligt i en tabel at angive i hvilket tidsinterval jeg ønsker at en person skal vide samt angivelse af hvilke præmie dette er. Jeg skal være 100% sikker på at når jeg selecter en præmie er der ingen andre der kan tage denne præmie. Ex. det vil være en katastrofe hvis jeg fx. uddeler 2 biler hvis der kun er 1 i en konkurrence.
Avatar billede arne_v Ekspert
21. august 2003 - 15:13 #1
Umiddelbart synesjeg ikke at det er et SELECT problem men snarere
et database struktur problem.

Hvis du f.eks. har en tabel
  fundetvinder
med to felter
  gevindstid
  personid
og du gør gevindstid til primær nøgle, så sikrer databasen
jo at der kun kan være en vinder af en gevindst.
Avatar billede arne_v Ekspert
21. august 2003 - 15:14 #2
INSERT INTO fundetvinder SELECT ...
Avatar billede arne_v Ekspert
21. august 2003 - 15:14 #3
Hvordan algoritmen laves så SELECT normalt kun finder en enkelt vinder
kan vi ike sige noget om på det foreliggende grundlag.
Avatar billede jinxit Nybegynder
21. august 2003 - 16:34 #4
Sålænge du enten laver hele din udvælgelse via. 1 query, en transaktion af queries eller låser tabellerne, som er du garanteret at din udvælgelse sker atomisk.
Avatar billede mhbech Nybegynder
21. august 2003 - 16:43 #5
Ja det er jeg klar over det er finten er at selecte at her er en præmie samtidig med jeg sætter denne præmie som værende optaget så der ikke er nogen der snupper med jeg prøver at inserte vinderen
Avatar billede algizoft Nybegynder
26. august 2003 - 16:14 #6
Du kan låse tabellerne.
Hvis du laver flg:
"LOCK TABLES table1 WRITE, table2 WRITE"
Kan ingen andre læse/skrive til tabellerne og du kan sikkert vælge vinder og opdatere præmier.
Husk at lave en "UNLOCK TABLES" når du er færdig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester