/ 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
Betinget insert i PostgreSQL?
Fra : Mikkel Carlsen


Dato : 18-02-02 22:00


Er det muligt at koge nedenstående pseudokode net til et enkelt
statement? Jeg vil gerne undgå at afvente select i mit script før jeg
kan lave den endelige insert (3. linie).

$id = SELECT id FROM names WHERE name='Hans'
if(!$id) $id = INSERT INTO names (name) VALUES ('Hans')
INSERT INTO main_table (name_id, ...) VALUES ($id, ...)

Det jeg har brug for er vel egentlig en slags betinget insert som så
kunne nestes ind i det sidste statement.

-Mikkel


 
 
Henrik Jochumsen (19-02-2002)
Kommentar
Fra : Henrik Jochumsen


Dato : 19-02-02 17:06

Hvis du laver feltet "name" til PRIMARY KEY, så kan du jo bare insætte og
derefter se om det går godt..:)

Ellers er der vist ikke så meget at gøre..

Mvh
Henrik Jochumsen
hj@noprobs.dk

> Er det muligt at koge nedenstående pseudokode net til et enkelt
> statement? Jeg vil gerne undgå at afvente select i mit script før jeg
> kan lave den endelige insert (3. linie).
>
> $id = SELECT id FROM names WHERE name='Hans'
> if(!$id) $id = INSERT INTO names (name) VALUES ('Hans')
> INSERT INTO main_table (name_id, ...) VALUES ($id, ...)
>
> Det jeg har brug for er vel egentlig en slags betinget insert som så
> kunne nestes ind i det sidste statement.




Mikkel Carlsen (19-02-2002)
Kommentar
Fra : Mikkel Carlsen


Dato : 19-02-02 20:13

Henrik Jochumsen wrote:

>Hvis du laver feltet "name" til PRIMARY KEY, så kan du jo bare insætte og
>derefter se om det går godt..:)
>
Du mener vel UNIQUE? Har overvejet at hacke mig ud af problemet ved at
gøre noget lignende:

INSERT INTO names (name) VALUES ('Hans'); INSERT INTO main_table (name_id, ...) VALUES (SELECT id FROM names WHERE name='Hans'), ...)

Men det synes jeg nu ikke er særligt kønt, både fordi det giver noget rod i min log og fordi jeg kører en insert hvor det i ~99,9% af tilfældende ikke er nødvendigt.

-Mikkel

>
>Ellers er der vist ikke så meget at gøre..
>
>Mvh
> Henrik Jochumsen
> hj@noprobs.dk
>
>>Er det muligt at koge nedenstående pseudokode net til et enkelt
>>statement? Jeg vil gerne undgå at afvente select i mit script før jeg
>>kan lave den endelige insert (3. linie).
>>
>>$id = SELECT id FROM names WHERE name='Hans'
>>if(!$id) $id = INSERT INTO names (name) VALUES ('Hans')
>>INSERT INTO main_table (name_id, ...) VALUES ($id, ...)
>>
>>Det jeg har brug for er vel egentlig en slags betinget insert som så
>>kunne nestes ind i det sidste statement.
>>


Henrik Jochumsen (20-02-2002)
Kommentar
Fra : Henrik Jochumsen


Dato : 20-02-02 08:50

>
> >Hvis du laver feltet "name" til PRIMARY KEY, så kan du jo bare insætte
og
> >derefter se om det går godt..:)
> >
> Du mener vel UNIQUE? Har overvejet at hacke mig ud af problemet ved at
> gøre noget lignende:
PRIMARY KEYs har vel også UNIQUE egenskaber.:)

> INSERT INTO names (name) VALUES ('Hans'); INSERT INTO main_table (name_id,
....) VALUES (SELECT id FROM names WHERE name='Hans'), ...)
>
> Men det synes jeg nu ikke er særligt kønt, både fordi det giver noget rod
i min log og fordi jeg kører en insert hvor det i ~99,9% af tilfældende ikke
er nødvendigt.
>

Den pæne måde er nok at checke med en SELECT, og derefter INSERT'e, så kan
andre også forstå det.:)

Mvh
Hj



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste