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

postgres не разпознава временна таблица във функция

Postgres изпълнява някои прости проверки на функцията, която се опитвате да създадете, и открива (правилно), че таблицата work_list (все още) не съществува. Виждам две опции:

<удар>

1. „Фалшифицирайте, докато не успеете“

Всъщност създайте (временната) таблица, преди да създадете функцията. Временната таблица ще изчезне в края на сесията, но след като функцията бъде създадена, вие сте преминали този тест завинаги.
Очевидно е, че трябва да премахнете тази таблица, преди да изпълните функцията в същата сесия, за да избегнете конфликт. По-добре обаче:използвайте CREATE TEMP TABLE IF NOT EXISTS във вашата функция (Postgres 9.1+). Може да искате да съкратите таблицата, ако вече съществува ...

Въпреки това (вижте коментарите по-долу), цитирайки ръководството

Удебелен акцент е мой.

2. Вместо това използвайте PL/pgSQL

Проверките са по-малко задълбочени в plpgsql. Ако Postgres все още се оплаква (което не е в този случай), можете също да изпълнете SQL динамично с EXECUTE .

Настрана:В много случаи зад ъгъла има по-ефективно решение без временна таблица...



  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. Генериране на автоматичен идентификатор в postgresql

  3. Преброяване на честотата на масив или jsonb обект

  4. Какъв би бил правилният начин за тестване на методите за верижно свързване на QueryBuilder на TypeORM?

  5. Нуждаете се от два индекса в таблица за свързване на HABTM?