sql >> Database >  >> RDS >> PostgreSQL

Update met functie die eenmaal wordt aangeroepen voor elke rij in Postgres 8.4

Heb je Postgres' niet-standaard UPDATE .. FROM . geprobeerd? clausule? Ik kan me voorstellen dat dit zou werken

update mytable
   set a = first_part(gen.id),
       b = second_part(gen.id),
       c = third_path(gen.id)
  from (
          select genid() as genid, id
          from mytable 
          where package_id = 10
       ) gen
 where mytable.id = gen.id;
 --and package_id = 10 -- This predicate is no longer necessary as the subquery
                       -- already filters on package_id, as Erwin mentioned

Merk op dat ik genid() . forceer precies één keer per record worden aangeroepen in mytable binnen de subselectie. Dan sluit ik me aan bij mytable en gen met behulp van een hypothetische id column.Bekijk hier de documentatie:

http://www.postgresql.org/docs/current/interactive /sql-update.html

Dit lijkt echter alleen met Postgres 9.0 te zijn geïntroduceerd. Als dat te ingewikkeld lijkt (d.w.z. niet erg leesbaar), kun je nog steeds je toevlucht nemen tot pgplsql als gebruiker Florin stelde hier voor .



  1. DATA DIRECTORY MySQL

  2. PHP - MySQL haalt de waarde van de parameter uit een opgeslagen procedure

  3. MySQL-fout 1118 (rijgrootte te groot) bij het herstellen van de Django-mailer-database

  4. PostgreSQL's array_agg() en array_to_string in MySQL