PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Актуализирайте с функция, извикана веднъж за всеки ред в Postgres 8.4

Опитвали ли сте нестандартното UPDATE .. FROM на Postgres клауза? Предполагам, че това ще свърши работа

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

Имайте предвид, че налагам genid() да се извиква точно веднъж на запис в mytable в рамките на подизбора. След това се присъединявам самостоятелно към mytable и gen използвайки хипотетичен id колона. Вижте документацията тук:

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

Това обаче изглежда е въведено само с Postgres 9.0. Ако това изглежда твърде сложно (т.е. не е много четливо), пак можете да прибегнете до pgplsql като потребител Флорин предложи тук .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Добавете сортиране без значение на малки и големи букви към PostgreSQL

  2. Изчисляване на процента игра отново на следващия ден

  3. Драйвер:[email protected] върна нула за URL... Докато внедрявате пролетно зареждане на Heroku

  4. Postgres не може да слуша конкретен IP адрес

  5. Кой е най-елегантният начин за съхраняване на времеви печат с nanosec в postgresql?