Hirdetés

Új hozzászólás Aktív témák

  • Magnat
    veterán

    Szia,

    nem ismerem a PostgreSQL-t, de igent tippelnék, sőt, mivel az insert elvileg row exclusive lockol (tehát nem a teljes táblát) az is lehet, h a rekordok fele már be lesz szúrva amikor a fv lefut, a többi meg még nem ...

    BEGIN;
    TRUNCATE TABLE tábla;
    LOCK TABLE tábla IN EXCLUSIVE MODE;
    INSERT INTO tábla SELECT * FROM másik_tábla WHERE feltétel;
    COMMIT;

    Én vhogy így csinálnám, nyilván ha a fv éppen akkor fut rá amikor ez történik, akkor egy picit várni fog. (Már ha fontos, h üres táblára vagy az insert közepén ne fusson le)

    Illetve a truncate elvileg gyorsabb mint a delete, szóval amiatt is így használnám.

    Sorry, a lock table a truncate elé kerül:

    BEGIN;
    LOCK TABLE tábla IN EXCLUSIVE MODE;
    TRUNCATE TABLE tábla;
    INSERT INTO tábla SELECT * FROM másik_tábla WHERE feltétel;
    COMMIT;

Új hozzászólás Aktív témák