/ 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
[MySQL] update
Fra : Søren


Dato : 12-01-04 18:55

Jeg har styr på insert funktionen hvor man indsætter værdier i en tabel.
Det kan være en fordel - kan jeg forstå - at anvende update for at
opdatere en tabel m. h. t. enten at opdatere eksisterende data eller
indsætte nyt såfremt det i forvejen ikke findes. Jeg har været inde på
MySQL manualen for at forsøge at forstå update:

http://www.mysql.com/documentation/maxdb/34/ee7fba293911d3a97d00a0c9449261/content.htm

men beder om hjælp til det, da jeg ikke er helt med på det. Forneden
vises oprettelsen af en tabel, hvor type kan gå igen for flere link, da
der med type forståes en gruppering af link. Jeg vil gerne kunne
indsætte link v. hj. a. update således at hvis linket ikke findes i
tabellen i forvejen bliver det indsat og hvis det evt. findes i forvejen
bliver der tale om en opdatering af de øvrige felter. Jeg er kommet frem
til flg.:

UPDATE OF link SET type = 'w' WHERE link = 'mypage.dk'

i linjen mangler vel reference navn samt at få de øvrige to felter
opdateret. Er der nogen i gruppen som kan hjælpe mig med dette ??

Søren

Tabllen link:

create table link (type varchar(3) not null,
link varchar(100) not null,
tekst varchar(50) not null,
kommentar varchar(200) not null)


 
 
Jens Gyldenkærne Cla~ (12-01-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 12-01-04 23:55

Søren skrev:

> Jeg vil gerne kunne indsætte link v. hj. a. update således at
> hvis linket ikke findes i tabellen i forvejen bliver det
> indsat og hvis det evt. findes i forvejen bliver der tale om
> en opdatering af de øvrige felter.

Det er ikke muligt i en enkelt omgang. Du kan enten (a) tjekke for
eksistensen først og så opdatere eller indsætte bagefter, eller (b)
forsøge at indsætte med det samme og bruge fejlhåndtering til at
opdatere hvis det mislykkes (det sidste forudsætter at et
unikt indeks på tabellen sørger for at man ikke kan indsætte det
samme link to gange).
--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov
til at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i Information

Troels Arvin (13-01-2004)
Kommentar
Fra : Troels Arvin


Dato : 13-01-04 00:10

On Mon, 12 Jan 2004 18:55:05 +0100, Søren wrote:

> Jeg har været inde på MySQL manualen for at forsøge at forstå update:
>
> http://www.mysql.com/documentation/maxdb/34/ee7fba293911d3a97d00a0c9449261/content.htm

Pas på: MySQL's alm. database (den, som langt de fleste benytter), er et
radikalt anderledes produkt end deres "MaxDB" produkt. Ovenstående URL er
del af MaxDB's dokumentation; er du sikker på, at det er MaxDB du har, og
ikke MySQL's klassiske databaseprodukt?

> Jeg vil gerne kunne
> indsætte link v. hj. a. update således at hvis linket ikke findes i
> tabellen i forvejen bliver det indsat og hvis det evt. findes i forvejen
> bliver der tale om en opdatering

Jeg er ikke helt sikker på, at jeg forstår dit indlæg fuldt ud, men:
_Hvis_ du benytter det klassiske MySQL produkt (fx. MySQL 3 eller 4), så
har du adgang til REPLACE. REPLACE er ikke del af SQL-standarden, og
findes så vidt jeg ved ikke i andre DBMSer end MySQL Database Server. Med
REPLACE kan du netop indsætte, hvis rækken ikke allerede findes, eller
opdatere, hvis den gør. Om den findes eller ej afgøres så vidt jeg
husker af primærnøglens værdi. Men læs evt. selv:
http://www.mysql.com/documentation/mysql/bychapter/manual_SQL_Syntax.html#REPLACE

--
Greetings from Troels Arvin, Copenhagen, Denmark


Søren (14-01-2004)
Kommentar
Fra : Søren


Dato : 14-01-04 18:41

Troels Arvin wrote:

> Pas på: MySQL's alm. database (den, som langt de fleste benytter), er et
> radikalt anderledes produkt end deres "MaxDB" produkt.

Det var jeg ikke lige opmærksom på, men det er den alm. jeg bruger.

> Jeg er ikke helt sikker på, at jeg forstår dit indlæg fuldt ud, men:
> _Hvis_ du benytter det klassiske MySQL produkt (fx. MySQL 3 eller 4), så
> har du adgang til REPLACE.

Du har forstået mig ret og det, som man kan med REPLACE er lige det, jeg
søger. Tak for hjælpen.

Søren


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

Månedens bedste
Årets bedste
Sidste års bedste