Portál AbcLinuxu, 11. května 2025 07:28

Dotaz: Jak naporcovat tabulku pro partitioning na Postgre??

17.5.2011 13:48 jeleniste | skóre: 13 | blog: Prokustovo lože
Jak naporcovat tabulku pro partitioning na Postgre??
Přečteno: 287×
Odpovědět | Admin
Mám tabulku (relativně velkou) a chci jí rozdělit do několika schémat a použít inherit (mam, řekněme, parcely pro okres a chci do scématu 'valasska_tatranka' dát parcely pro katastr Valašská tatranka.
insert into valasska_tatranka.parcely
select * from parcely where katuze_kod in (select kod from valasska_tatranka.katastr_uzemi) ;
 
delete from only parcely where id in (select id from valasska_tatranka.parcely);
to funguje, no problem, ale, kdyz budu mit, rekneme na parcely.id PK, tak mi tohle, predpokladam, nedovoli kvuli duplicite v unique constraint??
Existuje nejaka finta, jak tabulky pri insertu z jedny tabulky smazat z ty puvodni ty data rovnou?? Nebo musim si na to pro kazdou tabulku napsat trigr..
dik Je.
Nejsem blbý, jen se hloupě ptám

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.5.2011 10:20 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak naporcovat tabulku pro partitioning na Postgre??
Odpovědět | | Sbalit | Link | Blokovat | Admin
Za prvé, unique constraint v děděných tabulkách v PostgreSQL nefunguje napříč tabulkami. To asi „řeší“ váš problém, ale zároveň je potřeba s tím počítat v další práci s tabulkami.

Za druhé, standardní řešení tohoto případu je takové, že dané omezení nastavíte jako odložitelné (deferrable) – omezení se pak nekontroluje hned po provedení příkazu, ale až na konci transakce. Příkazy pak nesmíte provést v autocommit módu, ale musíte je uzavřít do jedé transakce.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.