|
| insert/update, vælg selv... :) Fra : Niels Andersen |
Dato : 01-09-01 21:59 |
|
Jeg skal bruge en slags "counter".
Basically, en tabel med to Integer felter: "id" og "counter".
Første gang man tæller en "id" skal der oprettes en række (INSERT) med
id=<id> og counter=1.
Derefter skal counter bare forøges (UPDATE) - counter=counter+1 where
id=<id>.
Dette kan jeg klare med to queries. Man kunne lave en UPDATE, og hvis det
ikke du'r prøver man med en INSERT.
Men kan det klares med én kontakt til databasen?
Det er ikke så hulens kritisk i dette tilfælle, men hvis det kan lade sig
gøre lærer jeg sikkert noget vældigt smart. :)
--
Mvh.
Niels Andersen
| |
Peter Brodersen (02-09-2001)
| Kommentar Fra : Peter Brodersen |
Dato : 02-09-01 04:06 |
|
On Sat, 1 Sep 2001 22:59:18 +0200, "Niels Andersen"
<niels-usenet@myplace.dk> wrote:
>Dette kan jeg klare med to queries. Man kunne lave en UPDATE, og hvis det
>ikke du'r prøver man med en INSERT.
>
>Men kan det klares med én kontakt til databasen?
Kig evt. på REPLACE som alternativ til INSERT og UPDATE. Den lader til
at kunne noget af det, du ønsker (indsætter en ny row, hvis der ikke
er noget match, og retter eksisterende rows, hvis ens where-clause
matcher)
--
- Peter Brodersen
| |
Niels Andersen (02-09-2001)
| Kommentar Fra : Niels Andersen |
Dato : 02-09-01 07:45 |
|
"Peter Brodersen" <professionel@nerd.dk> wrote in message
news:smhk7.28894$Ay1.870025@news000.worldonline.dk...
> >Dette kan jeg klare med to queries. Man kunne lave en UPDATE, og hvis det
> >ikke du'r prøver man med en INSERT.
> >
> >Men kan det klares med én kontakt til databasen?
>
> Kig evt. på REPLACE som alternativ til INSERT og UPDATE. Den lader til
> at kunne noget af det, du ønsker (indsætter en ny row, hvis der ikke
> er noget match, og retter eksisterende rows, hvis ens where-clause
> matcher)
Med den kan man ikke se indholdet af den række, som evt. eksisterer. Og det
er noget skidt, for jeg skal jo lægge én til den eksisterende værdi.
--
Mvh.
Niels Andersen
| |
Peter Brodersen (02-09-2001)
| Kommentar Fra : Peter Brodersen |
Dato : 02-09-01 19:00 |
|
On Sun, 2 Sep 2001 08:44:48 +0200, "Niels Andersen"
<niels-usenet@myplace.dk> wrote:
>Med den kan man ikke se indholdet af den række, som evt. eksisterer. Og det
>er noget skidt, for jeg skal jo lægge én til den eksisterende værdi.
Husk, at du med UPDATE's også kan lave noget i stil med:
UPDATE tabel SET counter = (counter + 1) WHERE id = 10;
Måske kan man lave noget lignende med REPLACE, hvis fx at
default-value'n for "counter" er 0.
--
- Peter Brodersen
| |
Stig Johansen (02-09-2001)
| Kommentar Fra : Stig Johansen |
Dato : 02-09-01 07:38 |
|
Niels Andersen wrote:
> Jeg skal bruge en slags "counter".
> Basically, en tabel med to Integer felter: "id" og "counter".
>
> Første gang man tæller en "id" skal der oprettes en række (INSERT) med
> id=<id> og counter=1.
> Derefter skal counter bare forøges (UPDATE) - counter=counter+1 where
> id=<id>.
>
> Dette kan jeg klare med to queries. Man kunne lave en UPDATE, og hvis det
> ikke du'r prøver man med en INSERT.
>
> Men kan det klares med én kontakt til databasen?
>
> Det er ikke så hulens kritisk i dette tilfælle, men hvis det kan lade sig
> gøre lærer jeg sikkert noget vældigt smart. :)
>
> --
> Mvh.
>
> Niels Andersen
Hej.
Jeg er ikke helt klar over, hvad du mener med én kontakt til databasen.
Normalt kan du fyre mange statements af på samme connection.
Hvis det er kritisk med kun et statement, så brug en stored procedure.
--
Med venlig hilsen / Best regards
Stig Johansen
linux@w3data.dk
| |
Niels Andersen (02-09-2001)
| Kommentar Fra : Niels Andersen |
Dato : 02-09-01 07:47 |
|
"Stig Johansen" <linux@w3data.dk> wrote in message
news:9msjse$ci7$1@sunsite.dk...
> > Første gang man tæller en "id" skal der oprettes en række (INSERT) med
> > id=<id> og counter=1.
> > Derefter skal counter bare forøges (UPDATE) - counter=counter+1 where
> > id=<id>.
> >
> > Dette kan jeg klare med to queries. Man kunne lave en UPDATE, og hvis
det
> > ikke du'r prøver man med en INSERT.
> >
> > Men kan det klares med én kontakt til databasen?
> Jeg er ikke helt klar over, hvad du mener med én kontakt til databasen.
Åbner en socket til databasen.
Fyrer en UPDATE af.
Alt efter resultatet af den UPDATE, fyres der også en INSERT af.
Det er så et definitionsspørgsmål om det er én eller to kontakter til
databasen, hvis jeg laver både en UPDATE og en INSERT. :)
Men det jeg mener er, at jeg to gange skal vente på svar.
--
Mvh.
Niels Andersen
| |
|
|