|  | 		    
					
        
         
          
         
	
          | |  | 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
 
 
 
 
 |  |  | 
 |  |