<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - Tymczasowe Tabele]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=72</link>
		<description><![CDATA[Najświeższe odpowiedzi w Tymczasowe Tabele.]]></description>
		<lastBuildDate>Fri, 22 Aug 2008 09:50:25 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: Tymczasowe Tabele]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=260#p260</link>
			<description><![CDATA[dokładnie te same wyniki dostaję w psql jak i pgAdmin3]]></description>
			<author><![CDATA[dummy@example.com (rafko)]]></author>
			<pubDate>Fri, 22 Aug 2008 09:50:25 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=260#p260</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Tymczasowe Tabele]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=254#p254</link>
			<description><![CDATA[wszystkie te operacje robisz z poziomu PgAdmina? Moze to on nawalam sam osobiscie nie uzywam tego narzedzia wiec ciezko mi sie wypowiedziec ale widac, ze nie wrzuca do search_path schematow z tabelami tymczasowymi. Czy z poziomu psql otrzymujesz takie same wyniki tych dwu ostatnich zapytań?]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Thu, 21 Aug 2008 19:36:34 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=254#p254</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Tymczasowe Tabele]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=253#p253</link>
			<description><![CDATA[Wyniki zwracane to


[b]ERROR:  relation "temp__bufor_towarow_sprzedaz" does not exist[/b]

[b]********** Błąd **********[/b]

[b]ERROR: relation "temp__bufor_towarow_sprzedaz" does not exist
Stan SQL:42P01
[/b]
z zapytaniem: "select pg_table_is_visible('pg_temp_3.temp__bufor_towarow_sprzedaz'::regclass);" 
dostaję prawidłowy komunikat, że tabela istnieje.

i dla drugiego zapytania
[b]
"{pg_catalog,public}"
[/b]

Dodam, że zapytanie: 
[b]INSERT INTO pg_temp_3.temp__bufor_towarow_sprzedaz VALUES (1, 668, FALSE, '2');[/b]
nie jest dodawane prawidłowo

Komunikat błędu to: "Brak kolumn zdefiniowanych w zestawie wierszy"]]></description>
			<author><![CDATA[dummy@example.com (rafko)]]></author>
			<pubDate>Thu, 21 Aug 2008 12:41:44 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=253#p253</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Tymczasowe Tabele]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=252#p252</link>
			<description><![CDATA[rzeczywiscie cos mi sie pomieszalo, nie mozna prefiksowac tabel tymczasowych.
Co ci zwracają

[code]select pg_table_is_visible('nazwa_tabeli_tymczasowej'::regclass);[/code]
[code]select current_schemas(true);[/code]]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Wed, 20 Aug 2008 16:11:41 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=252#p252</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Tymczasowe Tabele]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=251#p251</link>
			<description><![CDATA[[quote=rski]Nie mozesz utworzyc tabeli tymczasowej w schemacie publicznym?[/quote]
A w jaki sposób to zrobić? [b]CREATE TEMP TABLE public.temp_table;[/b] ??? NIE DZIAŁA
Jak zrobię selecta bez schematu zwraca że nie ma takiej tabeli.

Błąd jaki dostaję to [b]Brak kolumn zdefiniowanych w zestawie wierszy[/b]
ale gdy identyczne zapytanie wykonam w pgAdmin3 wszystko się zapisuje bez problemu. O co tu chodzi?

wydaje mi się że lepiej by było zastosować jakąś funkcję w postgresie która utworzy i wstawi dane to tabeli temp.

Kolejne pytanie dlaczego po tabelach tymczasowych zostają jakieś wpisy w postaci pg_temp_n
nie da się ich usunąć?

Przez tabele tymczasowe rozumiem UTWÓRZ -> WYKONAJ -> USUŃ BEZPOWROTNIE BEZ JAKICHKOLWIEK ŚLADÓW.
Może jest opcja, która tworzyć będzie tabele tylko i wyłącznie w pg_temp_1.

Zastanawiałem się nad kilkoma innymi rozwiązaniami:
1. Utworzyć schemat TEMP i tam tworzyć tymczasowe unikalne tabele. (Tylko co ze zwalnianiem tych tabel i wydajnością bazy?)
2. Utworzyć jedną tabelę i w niej przypisywać tymczasowe dane. (Tu wydajność byłaby chyba lepsza?)

Generalnie nie podoba mi się rozwiązanie tymczasowych tabel w PostgreSQL.]]></description>
			<author><![CDATA[dummy@example.com (rafko)]]></author>
			<pubDate>Wed, 20 Aug 2008 14:45:18 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=251#p251</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Tymczasowe Tabele]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=250#p250</link>
			<description><![CDATA[a co ci zwraca jak zrobisz zwyklego selecta (bez schematu), ze nie ma takiej tabeli?
robisz to wszystko z poziomu pgAdmin3?, a jak dziala z linii komend (psql)?
Nie mozesz utworzyc tabeli tymczasowej w schemacie publicznym?]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Tue, 19 Aug 2008 16:35:10 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=250#p250</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Tymczasowe Tabele]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=249#p249</link>
			<description><![CDATA[Wszystko fajnie ale teraz wiem że mi nie wstawia danych do tej tabeli.
W pgAdmin jeżeli te same dane wstawię za pomocą Skryptu SQL dane wędrują do tabeli a moim programie już nie.

Znowu mam problem! :(

dane wstawiam za pomocą:
[b]
procedure UmiescTowaryW_BuffTemp;
var
  zapytanie : String;
  i : Word;
begin
  if get_UstawBaze then set_baza := RKsystem1.UstawBaze(InfoDB.db_rksystem +InfoDB.rok) else set_baza := True;
  if set_baza then
  begin
    DB_Connect.BeginTrans;
    try
      RKsystem1.SQL_CommandRun(DB_AdoCommand, '', PChar('CREATE TEMP TABLE '+table_buf +table_bufor_towarow_sprzedaz +TabelaTowarowDlaFakturBufor));
      for i := 0 to High(tablica1D) do
      begin
        WczytajTowarDoEdycjiZZestawuSkladanego(StrToIntDef(tablica1D[i], 0), table_towary_dla_zestawow_skladanych);
        zapytanie := 'INSERT INTO '+pg_temp +'.' +table_buf +table_bufor_towarow_sprzedaz +' VALUES ('+
          ''+IntToStr(i+1)+', '+
          ''+IntToStr(Towar_box.id_towaru)+', '+
          'FALSE, '+
          ''''+IntToStr(UserUprawnienia.id)+''', '+
          ''''+Towar_box.nazwa+''', '+
          ''''+Towar_box.nazwa_fiskalna+''', '+
          ''''+Towar_box.nr_fvz+''', '+
          ''''+IntToStr(Towar_box.id_jm)+''', '+
          ''''+Towar_box.id_typ+''', '+
          ''''+KonwertujCene(FloatToStr(Towar_box.ilosc))+''', '+
          ''''+KonwertujCene(FloatToStr(Towar_box.cena))+''', '+
          ''''+KonwertujCene(FloatToStr(Towar_box.cena_sprz))+''', '+
          ''+GetPusty_Cudzyslow(Towar_box.sn)+', '+
          ''''+IntToStr(Towar_box.created_by)+''', '+
          ''+GetPusty_CudzyslowZero(Towar_box.modified_by)+', '+
          ''''+FormatDateTime('YYYY-MM-DD', Towar_box.created_date)+''', '+
          ''''+FormatDateTime('YYYY-MM-DD', Towar_box.modified_date)+''', '+
          ''+GetPusty_Cudzyslow(Towar_box.opis)+', '+
          ''+GetPusty_Cudzyslow(Towar_box.gwarancja)+', '+
          ''''+Towar_box.vat+''''+
          ');';
        RKsystem1.SQL_CommandRun(DB_AdoCommand, '', PChar(zapytanie));
        RKsystem1.DebugZapytan(zapytanie);  // Linia która wypisuje mi dane wstawione do zapytania.
      end;
      DB_Connect.CommitTrans;
    except
      DB_Connect.RollbackTrans;
      Error('Tworzenie tabeli ...','Błąd transakcji:', 'Transakcja nie mogła zostać zapisana w całości. Żadna z tabel tymczasowych nie została utworzona.', 'Zamknij', error_img_info);
    end;
  end;
end;
[/b]
Wszystkie inne dane wstawiane tą metodą do tabel zwykłych zapisywane są poprawnie więc nie rozumiem czemu tu jest problem.

W dodatku zauważyłem, że [b]pg_temp_3[/b] zmieniło się na [b]pg_temp_4[/b]
o co w tym chodzi i jak ominąć problem tego schematu.]]></description>
			<author><![CDATA[dummy@example.com (rafko)]]></author>
			<pubDate>Tue, 19 Aug 2008 13:11:59 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=249#p249</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Tymczasowe Tabele]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=248#p248</link>
			<description><![CDATA[Jak sobie dodasz pg_temp_3 do search_path to wystarczy tylko nazwa tabeli (problem moze sie pojawic gdy tabele tymczasowe bedziesz nazywal tak samo jak tabele nietymczasowe, mozliwe ze wtedy pewne tabele bedziesz musial prefiskowac nazwami schematow)]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Tue, 19 Aug 2008 10:14:06 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=248#p248</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Tymczasowe Tabele]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=247#p247</link>
			<description><![CDATA[ok już mam, gdyby ktoś potrzebował to w wersji 8.3.3 PostgreSQL robi się to tak:

SELECT * FROM pg_temp_3.tabela;]]></description>
			<author><![CDATA[dummy@example.com (rafko)]]></author>
			<pubDate>Tue, 19 Aug 2008 09:36:28 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=247#p247</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Tymczasowe Tabele]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=246#p246</link>
			<description><![CDATA[Tworzę sobie tabelę: 

CREATE TEMPORARY TABLE TABLE_BUFF_bufor_towarow_sprzedaz(
id bigserial not null, 
id_towaru bigint null,
flag boolean not null, 
dodal integer not null, 
nazwa varchar(128) not null, 
nazwa_fiskalna varchar(16) null, 
nr_fvz varchar(32) null, 
id_jm integer not null,
id_typ text null, 
ilosc float not null, 
cena float not null, 
cena_sprz float not null, 
sn varchar(128) null, 
created_by integer null, 
modified_by integer null, 
created_date date null, 
modified_date date null, 
opis text null, 
gwarancja varchar(64) null, 
vat varchar(16) not null, 
PRIMARY KEY(id));

Dalej wstawiam do tej tabeli dane w transakcji i wszystko przebiega prawidłowo bez żadnych błędów.
Pytanie tylko jak odczytać dane z tej tabeli w celu sprawdzenia czy one tam faktycznie są.]]></description>
			<author><![CDATA[dummy@example.com (rafko)]]></author>
			<pubDate>Tue, 19 Aug 2008 08:37:52 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=246#p246</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Tymczasowe Tabele]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=245#p245</link>
			<description><![CDATA[Moze troche konkretniej bo nie wiem na czym polega  problem z odczytem danych z tabeli tymczasowej.]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Mon, 18 Aug 2008 18:48:48 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=245#p245</guid>
		</item>
		<item>
			<title><![CDATA[Tymczasowe Tabele]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=243#p243</link>
			<description><![CDATA[Witam, mam problem z odczytem danych umieszczony w tabeli tymczasowej.
Generalnie to chciałbym umieć takie dane odczytać i wyczyścić po zakończeniu transakcji.
wiem jak taką tabelę utworzyć i wpisać do niej dane ale nie wiem jak je stamtąd wyciągnąć.]]></description>
			<author><![CDATA[dummy@example.com (rafko)]]></author>
			<pubDate>Mon, 18 Aug 2008 15:56:24 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=243#p243</guid>
		</item>
	</channel>
</rss>
