SORU
13 Mayıs 2010, PERŞEMBE


Kesiliyor PostgreSQL veritabanındaki tüm tabloları

Ben düzenli olarak yeniden bir önce PostgreSQL veritabanı tüm verileri silmek gerekir. Nasıl bu doğrudan SQL yapayım?

Şu anda çalıştırmak için gerekli olan tüm komutları döndüren bir SQL deyimi ile gelip başardım:

SELECT 'TRUNCATE TABLE ' ||  tablename || ';' FROM pg_tables WHERE tableowner='MYUSER';

Ama ben onları sonra programlı olarak çalıştırmak için bir yol göremiyorum.

CEVAP
13 Mayıs 2010, PERŞEMBE


FrustratedWithFormsDesigner doğru, PL/PostgreSQL yapabilirsiniz. İşte senaryo:

CREATE OR REPLACE FUNCTION truncate_tables(username IN VARCHAR) RETURNS void AS $$
DECLARE
    statements CURSOR FOR
        SELECT tablename FROM pg_tables
        WHERE tableowner = username AND schemaname = 'public';
BEGIN
    FOR stmt IN statements LOOP
        EXECUTE 'TRUNCATE TABLE ' || quote_ident(stmt.tablename) || ' CASCADE;';
    END LOOP;
END;
$$ LANGUAGE plpgsql;

Bundan sonra bu gibi kullanabileceğiniz bir saklı işlevi (bu sadece bir kez yapmanız gerekir) oluşturur:

SELECT truncate_tables('MYUSER');

HTH!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GUN-TIME with Brandon

    GUN-TIME wit

    3 ŞUBAT 2009
  • уσ ρℓz sυв ιℓℓ sυв вαcқ

    уσ ρℓz

    14 EKİM 2010
  • Tech4Geeks

    Tech4Geeks

    8 Ocak 2012