/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
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



Søg
Reklame
Statistik
Spørgsmål : 177517
Tips : 31968
Nyheder : 719565
Indlæg : 6408638
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste