Avatar billede jensen2005 Nybegynder
06. december 2008 - 13:19 Der er 9 kommentarer og
2 løsninger

Et teoretisk spørgsmål

Et teoretisk spørgsmål:

Vil man bruge transaction i følgende eksempel eller ville det være nok at klare i SQL(med ”IF EXIST()…..”)?

Man har en e-handelsside hvor en kunde tilføjer vare til kurv hvilket betyder der bliver oprettet en række i en ordretabel i databasen med en fremmednøgle over til varen.

I nøjagtige samme splitsekund sletter backendbruger varen fra databasen dette betyder at fremmednøglen i ordretabellen peger på en række som ikke eksisterer.
Avatar billede kalp Novice
06. december 2008 - 13:53 #1
if exist kan godt benyttes til at tjekke om en række eksistere.

ps. hvis du har oprettet relationer mellem tabellerne så kan din backend bruger ikke bare slette rækken uden at få en fejl!
dvs. så skal den vare først slettes fra ordretabellen ellers får du en fejl.
Avatar billede kalp Novice
06. december 2008 - 13:55 #2
sorry.. backend brugeren kan ikke slette en vare som der er en relation til fra din ordretabel..

jeg kom til at skrive række, men mente vare.
Avatar billede arne_v Ekspert
06. december 2008 - 14:32 #3
Jeg mener ikke at transaktion hjælper her. Rækken i vare tabellen indgår
ikke i web shopperens transaktion.

Som kalp er inde på, så er det den referentielle integritet der betyder noget.

Der er 3 scenarier:

web shopper før admin & on delete no action:
  web shopper laver insert i ordre
  admin får fejl

web shopper før admin & on delete cascade:
  web shopper laver insert i ordre
  admin sletter både i vare og ordre

admin før web shopper:
  admin sletter i vare
  web shopper får fejl
Avatar billede jensen2005 Nybegynder
06. december 2008 - 15:18 #4
Selvfølgelig - tusind takker.

Kast svar ind...
Avatar billede jensen2005 Nybegynder
06. december 2008 - 15:25 #5
Har sat delete rule til "casade"... takker..
Avatar billede jensen2005 Nybegynder
06. december 2008 - 15:33 #6
Lige det sidste langt ude "dumme" teoretiske spørgsmål.

Jeg går ud fra at der ikke er noget som hedder ”admin samtidig med web shopper” eller?. Jeg mener hvordan fungere sådan en database egentlig: tager den en sqlkommando ad gangen eller samtidig??
Avatar billede arne_v Ekspert
06. december 2008 - 16:28 #7
Den er nødt til at lave en intern låsning som sikrer den referentielle integritet.

Det er ikke muligt at:
  admin sletter i vare & web shopper indsætter i ordre
og at man derved ender i en situation hvor den referentielle integitet ikke er opretholdt.
Avatar billede kalp Novice
07. december 2008 - 18:32 #8
Hvem skal kaste svar? arne? mig? begge?
Avatar billede jensen2005 Nybegynder
07. december 2008 - 20:44 #9
Begge.. takker...
Avatar billede arne_v Ekspert
07. december 2008 - 21:00 #10
svar
Avatar billede kalp Novice
07. december 2008 - 21:47 #11
=)
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