PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Aktualizacja z funkcją wywoływaną raz dla każdego wiersza w Postgres 8.4

Czy wypróbowałeś niestandardowy UPDATE .. FROM Postgresa? klauzula? Wyobrażam sobie, że to zadziała

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

Zauważ, że wymuszam genid() być wywoływana dokładnie raz na rekord w mytable w ramach podselekcji. Następnie dołączam do mytable i gen za pomocą hipotetycznego id kolumna. Zobacz dokumentację tutaj:

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

Wydaje się, że zostało to wprowadzone tylko w Postgresie 9.0. Jeśli wydaje się to zbyt skomplikowane (tj. niezbyt czytelne), nadal możesz skorzystać z pgplsql jako użytkownik Sugerowany tutaj Florin .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Problem z porządkowaniem znaków akcentowanych w PostgreSQL 8.4

  2. Odmowa zezwolenia na zrzut Postgresql

  3. Warunek SQL w funkcji okna

  4. Jak stworzyć użytkownika dla bazy danych w postgresql?

  5. Jak wstawić listę Pythona do tabeli Postgres