All Products
Search
Document Center

Hologres:ALTER TABLE

Last Updated:Jun 03, 2026

Pernyataan ALTER TABLE memodifikasi struktur tabel, kolom, dan properti. Perubahan pada tabel induk secara otomatis diteruskan ke tabel anaknya.

Batasan

Modifikasi yang didukung:

  • Hologres mendukung maksimal 6.400 kolom per tabel. Saat menambahkan kolom menggunakan ALTER TABLE ADD COLUMN, jumlah total kolom tidak boleh melebihi batas ini.

  • Mengganti nama tabel, menambahkan kolom, dan memodifikasi TTL.

  • Memodifikasi nilai default kolom serta properti dictionary_encoding_columns dan bitmap_columns.

Catatan penggunaan

Memodifikasi dictionary_encoding_columns, bitmap_columns, atau time_to_live_in_seconds dapat memicu kompaksi latar belakang yang mengonsumsi CPU dan berpotensi meningkatkan penggunaan penyimpanan sementara.

Memodifikasi tipe data

Mulai dari Hologres V3.0, Anda dapat memodifikasi tipe data kolom pada tabel internal.

  • Batasan

    • Hanya didukung pada tabel non-partisi dan tabel induk. Tabel anak tidak didukung.

    • Anda tidak dapat memodifikasi tipe data kolom partisi pada tabel induk.

    • Klausa COLLATE dan USING tidak didukung.

    • Hanya konversi tipe data berikut yang didukung:

      Source type

      Target type

      Catatan

      VARCHAR(N)

      VARCHAR(M)

      M harus lebih besar dari N.

      VARCHAR(N)

      TEXT

      Tidak ada

      CHAR(N)

      CHAR(M)

      M harus lebih besar dari N.

      CHAR(N)

      VARCHAR(M)

      M harus lebih besar dari atau sama dengan N.

      CHAR(N)

      TEXT

      Tidak ada

      JSON

      TEXT

      Tidak ada

      VARCHAR(N)[]

      VARCHAR(M)[]

      M harus lebih besar dari N.

      VARCHAR(N)[]

      TEXT[]

      Tidak ada

  • Sintaksis

    ALTER TABLE [IF EXISTS] [<schema_name>.]<table_name> ALTER [ COLUMN ] <column_name> TYPE <data_type>;
  • Contoh

    -- Buat tabel. Tipe data awal kolom class adalah varchar(10).
    BEGIN;
    CREATE TABLE tbl (
      "id" bigint NOT NULL,
      "name" text NOT NULL,
      "age" bigint,
      "class" varchar(10) NOT NULL,
      "reg_timestamp" timestamptz NOT NULL,
      PRIMARY KEY (id, age)
    );
    CALL set_table_property('tbl', 'orientation', 'column');
    CALL set_table_property('tbl', 'distribution_key', 'id');
    CALL set_table_property('tbl', 'clustering_key', 'age');
    CALL set_table_property('tbl', 'event_time_column', 'reg_timestamp');
    COMMIT;
    
    -- Masukkan data sampel.
    INSERT INTO tbl VALUES (1, 'Alice', 18, 'class1', '2024-01-01 10:00:00');
    INSERT INTO tbl VALUES (2, 'Bob', 20, 'class2', '2024-01-02 11:00:00');
    
    -- Periksa tipe data kolom class sebelum modifikasi.
    SELECT column_name, data_type, character_maximum_length
    FROM information_schema.columns
    WHERE table_schema = 'public' AND table_name = 'tbl' AND column_name = 'class';
    -- Hasil berikut dikembalikan: class | character varying | 10
    
    -- Modifikasi tipe data kolom class menjadi text.
    ALTER TABLE tbl ALTER COLUMN class TYPE text;
    
    -- Periksa tipe data kolom class setelah modifikasi.
    SELECT column_name, data_type, character_maximum_length
    FROM information_schema.columns
    WHERE table_schema = 'public' AND table_name = 'tbl' AND column_name = 'class';
    -- Hasil berikut dikembalikan: class | text | NULL

Ganti nama tabel

Mengganti nama tabel. Operasi gagal jika tabel tidak ada atau nama baru sudah digunakan.

Catatan

Anda tidak dapat mengganti nama tabel lintas skema berbeda.

  • Sintaksis

    -- Ganti nama tabel internal.
    ALTER TABLE [IF EXISTS] [<schema_name>.]<table_name> RENAME TO <new_table_name>;
    
    -- Ganti nama tabel eksternal.
    ALTER FOREIGN TABLE [IF EXISTS] [<schema_name>.]<foreign_table_name> RENAME TO <new_foreign_table_name>;
  • Contoh

    -- Buat tabel dan masukkan data sampel.
    CREATE TABLE public.holo_test (id bigint, name text);
    INSERT INTO public.holo_test VALUES (1, 'Alice'), (2, 'Bob');
    
    -- Periksa nama tabel sebelum penggantian nama.
    SELECT table_name FROM information_schema.tables
    WHERE table_schema='public' AND table_name IN ('holo_test', 'holo_test_1');
    -- Hasil berikut dikembalikan: holo_test
    
    -- Ganti nama tabel holo_test menjadi holo_test_1.
    ALTER TABLE IF EXISTS public.holo_test RENAME TO holo_test_1;
    
    -- Periksa nama tabel setelah penggantian nama.
    SELECT table_name FROM information_schema.tables
    WHERE table_schema='public' AND table_name IN ('holo_test', 'holo_test_1');
    -- Hasil berikut dikembalikan: holo_test_1
    
    -- Verifikasi bahwa data tetap dipertahankan.
    SELECT * FROM public.holo_test_1 ORDER BY id;
    -- Hasil berikut dikembalikan: 1, Alice / 2, Bob
    
    -- Ganti nama tabel eksternal foreign_holo_test menjadi foreign_holo_test_1.
    ALTER FOREIGN TABLE IF EXISTS public.foreign_holo_test RENAME TO foreign_holo_test_1;

Tambah kolom

Menambahkan kolom ke tabel. Kolom baru ditambahkan setelah kolom terakhir yang ada.

  • Sintaksis

    -- Tambah satu kolom.
    ALTER TABLE [IF EXISTS] [<schema_name>.]<table_name> ADD COLUMN <new_column> <data_type>;
    
    -- Tambah beberapa kolom.
    ALTER TABLE [IF EXISTS] [<schema_name>.]<table_name> ADD COLUMN <new_column_1> <data_type>, ADD COLUMN <new_column_2> <data_type>; 
  • Contoh

    -- Buat tabel dan masukkan data sampel.
    CREATE TABLE public.holo_test (name text);
    INSERT INTO public.holo_test VALUES ('Alice'), ('Bob');
    
    -- Periksa skema sebelum menambahkan kolom.
    SELECT column_name, data_type FROM information_schema.columns
    WHERE table_schema='public' AND table_name='holo_test' ORDER BY ordinal_position;
    -- Hasil berikut dikembalikan: name | text
    
    -- Tambahkan kolom id ke tabel holo_test.
    ALTER TABLE IF EXISTS public.holo_test ADD COLUMN id int;
    
    -- Periksa skema setelah menambahkan kolom id.
    SELECT column_name, data_type FROM information_schema.columns
    WHERE table_schema='public' AND table_name='holo_test' ORDER BY ordinal_position;
    -- Hasil berikut dikembalikan:
    -- name | text
    -- id   | integer
    
    -- Tambahkan beberapa kolom sekaligus.
    ALTER TABLE IF EXISTS public.holo_test ADD COLUMN age int, ADD COLUMN city text;
    
    -- Periksa skema setelah menambahkan beberapa kolom.
    SELECT column_name, data_type FROM information_schema.columns
    WHERE table_schema='public' AND table_name='holo_test' ORDER BY ordinal_position;
    -- Hasil berikut dikembalikan:
    -- name | text
    -- id   | integer
    -- age  | integer
    -- city | text

Hapus kolom (Beta)

Mulai dari Hologres V2.0, Anda dapat menghapus kolom dari tabel.

  • Batasan

    • Fitur ini hanya tersedia di Hologres V2.0 dan versi setelahnya. Jika instans Anda menjalankan versi sebelum V2.0, lihat panduan pemecahan masalah umum persiapan upgrade atau hubungi kami untuk bantuan. Untuk detail selengkapnya, lihat Bagaimana cara mendapatkan dukungan online lebih lanjut?.

    • Untuk tabel partisi, hapus kolom hanya dari tabel induk. Perubahan tersebut akan diteruskan secara otomatis ke semua tabel anak. Operasi ini intensif sumber daya; lakukan selama jam sepi.

    • Hanya pemilik tabel yang dapat menghapus kolom. Jika database Anda menggunakan Simple Permission Model (SPM), Anda harus menjadi anggota kelompok pengguna developer.

    • Anda tidak dapat menghapus kolom yang ditetapkan sebagai primary key, distribution key, clustering key, atau event_time_column.

    • Anda tidak dapat menghapus kolom dari tabel eksternal.

    • Saat Anda menghapus kolom JSONB, indeks JSONB terkait juga dihapus.

    • Saat Anda menghapus kolom proxima_vector, Anda harus menentukan parameter cascade.

    • Saat Anda menghapus kolom Serial, sequence yang dibuat berdasarkan kolom tersebut juga dihapus.

    • Jika Tampilan yang di-materialisasi bergantung pada suatu tabel, Anda tidak dapat menghapus tabel tersebut atau kolom apa pun yang dirujuk oleh tampilan tersebut.

  • Sintaksis

    Penting

    Tidak didukung di versi Hologres sebelum V2.0.

    set hg_experimental_enable_drop_column = on; -- Aktifkan fitur ini menggunakan parameter GUC ini.
    ALTER TABLE IF EXISTS <table_name> DROP COLUMN  [ IF EXISTS ] <column> [ RESTRICT | CASCADE ]
  • Contoh

    -- Buat tabel.
    begin;
    CREATE TABLE tbl (
     "id" bigint NOT NULL,
     "name" text NOT NULL,
     "age" bigint,
     "class" text NOT NULL,
     "reg_timestamp" timestamptz NOT NULL,
    PRIMARY KEY (id,age)
    );
    call set_table_property('tbl', 'orientation', 'column');
    call set_table_property('tbl', 'distribution_key', 'id');
    call set_table_property('tbl', 'clustering_key', 'age');
    call set_table_property('tbl', 'event_time_column', 'reg_timestamp');
    call set_table_property('tbl', 'bitmap_columns', 'name,class');
    call set_table_property('tbl', 'dictionary_encoding_columns', 'class:auto');
    commit;
    
    -- Masukkan data sampel.
    INSERT INTO tbl VALUES (1, 'Alice', 18, 'class1', '2024-01-01 10:00:00');
    INSERT INTO tbl VALUES (2, 'Bob', 20, 'class2', '2024-01-02 11:00:00');
    
    -- Hapus kolom yang ditentukan.
    set hg_experimental_enable_drop_column = on;-- Fitur ini dalam status beta. Anda harus mengaktifkannya menggunakan parameter GUC.
    ALTER TABLE IF EXISTS tbl DROP COLUMN name;

    Kueri tabel:

    SELECT * FROM tbl;
    
    -- Hasil berikut dikembalikan:
     id | age | class  |      reg_timestamp
    ----+-----+--------+------------------------
      1 |  18 | class1 | 2024-01-01 10:00:00+08
      2 |  20 | class2 | 2024-01-02 11:00:00+08
    (2 rows)

Ganti nama kolom

Mulai dari Hologres V1.1, Anda dapat mengganti nama kolom.

Catatan
  • Jika instans Anda menjalankan versi sebelum V1.1, lihat panduan pemecahan masalah umum persiapan upgrade atau hubungi kami untuk bantuan. Untuk detail selengkapnya, lihat Bagaimana cara mendapatkan dukungan online lebih lanjut?.

  • Untuk tabel partisi, ganti nama kolom hanya pada tabel induk. Perubahan tersebut akan diteruskan secara otomatis ke semua tabel anak.

  • Anda tidak dapat mengganti nama kolom di beberapa tabel sekaligus.

  • Hanya pemilik tabel yang dapat mengganti nama kolom. Jika database Anda menggunakan Simple Permission Model (SPM), Anda harus menjadi anggota kelompok pengguna developer.

  • Sintaksis

    ALTER TABLE [IF EXISTS] [<schema_name>.]<table_name> RENAME COLUMN <old_column_name> TO <new_column_name>;
  • Contoh

    -- Buat tabel dan masukkan data sampel.
    CREATE TABLE public.holo_rename_col (id bigint, age int);
    INSERT INTO public.holo_rename_col VALUES (1, 18), (2, 20);
    
    -- Periksa nama kolom sebelum penggantian nama.
    SELECT column_name FROM information_schema.columns
    WHERE table_schema='public' AND table_name='holo_rename_col' ORDER BY ordinal_position;
    -- Hasil berikut dikembalikan:
    -- id
    -- age
    
    -- Ganti nama kolom age pada tabel holo_rename_col menjadi user_age.
    ALTER TABLE IF EXISTS public.holo_rename_col RENAME COLUMN age TO user_age;
    
    -- Periksa nama kolom setelah penggantian nama.
    SELECT column_name FROM information_schema.columns
    WHERE table_schema='public' AND table_name='holo_rename_col' ORDER BY ordinal_position;
    -- Hasil berikut dikembalikan:
    -- id
    -- user_age
    
    -- Verifikasi bahwa data tetap dipertahankan.
    SELECT * FROM public.holo_rename_col ORDER BY id;
    -- Hasil berikut dikembalikan:
    -- 1, 18
    -- 2, 20

Memodifikasi nilai default

Memodifikasi nilai default kolom menjadi konstanta atau ekspresi konstanta. Perubahan ini hanya berlaku untuk penulisan berikutnya dan tidak mengubah data yang sudah ada. Fitur ini tersedia di Hologres V0.9.23 dan versi setelahnya.

  • Sintaksis

    -- Modifikasi nilai default kolom tabel.
    ALTER TABLE [IF EXISTS] [<schema_name>.]<table_name> ALTER COLUMN <column> SET DEFAULT <expression>;
    
    -- Hapus nilai default kolom tabel.
    ALTER TABLE [IF EXISTS] [<schema_name>.]<table_name> ALTER COLUMN <column> DROP DEFAULT;
  • Contoh

    -- Buat tabel dan masukkan baris awal tanpa nilai default untuk kolom id.
    CREATE TABLE public.holo_default (id int, name text);
    INSERT INTO public.holo_default (name) VALUES ('Alice');
    
    -- Periksa nilai default awal.
    SELECT column_name, column_default FROM information_schema.columns
    WHERE table_schema='public' AND table_name='holo_default' ORDER BY ordinal_position;
    -- Hasil berikut dikembalikan:
    -- id,   NULL
    -- name, NULL
    
    -- Modifikasi nilai default kolom id menjadi 0.
    ALTER TABLE IF EXISTS public.holo_default ALTER COLUMN id SET DEFAULT 0;
    
    -- Periksa nilai default yang telah dimodifikasi.
    SELECT column_name, column_default FROM information_schema.columns
    WHERE table_schema='public' AND table_name='holo_default' ORDER BY ordinal_position;
    -- Hasil berikut dikembalikan:
    -- id,   0
    -- name, NULL
    
    -- Masukkan baris baru untuk memverifikasi bahwa nilai default hanya berlaku untuk data baru.
    INSERT INTO public.holo_default (name) VALUES ('Bob');
    SELECT * FROM public.holo_default ORDER BY name;
    -- Hasil berikut dikembalikan:
    -- Alice, NULL   (Dimasukkan sebelum SET DEFAULT, sehingga nilai default tidak diterapkan.)
    -- Bob,   0      (Dimasukkan setelah SET DEFAULT, sehingga nilai default 0 diterapkan secara otomatis.)
    
    -- Hapus nilai default kolom id.
    ALTER TABLE IF EXISTS public.holo_default ALTER COLUMN id DROP DEFAULT;
    
    -- Periksa nilai default setelah dihapus.
    SELECT column_name, column_default FROM information_schema.columns
    WHERE table_schema='public' AND table_name='holo_default' ORDER BY ordinal_position;
    -- Hasil berikut dikembalikan:
    -- id,   NULL
    -- name, NULL

Memodifikasi properti tabel

  • Memodifikasi properti dictionary_encoding_columns. Ini menyandi ulang file data dan bersifat intensif sumber daya; lakukan selama jam sepi.

    • Sintaksis

      -- Modifikasi dictionary_encoding_columns (untuk V2.1 dan versi setelahnya).
      ALTER TABLE [IF EXISTS] [<schema_name>.]<table_name> SET (dictionary_encoding_columns = '[columnName{:[on|off|auto]}[,...]]'); -- Hanya modifikasi penuh yang didukung.
      
      -- Modifikasi dictionary_encoding_columns (untuk semua versi).
      -- Modifikasi penuh
      CALL SET_TABLE_PROPERTY('[<schema_name>.]<table_name>', 'dictionary_encoding_columns', '[columnName{:[on|off|auto]}[,...]]');
      
      -- Modifikasi inkremental. Hanya kolom yang ditentukan dalam panggilan yang dimodifikasi. Kolom lain tetap tidak berubah.
      CALL UPDATE_TABLE_PROPERTY('[<schema_name>.]<table_name>', 'dictionary_encoding_columns', '[columnName{:[on|off|auto]}[,...]]');
      Penting

      Di Hologres V2.0 dan versi setelahnya, menjalankan pernyataan ini dengan nilai kosong mempertahankan properti dictionary_encoding_columns. Di versi sebelumnya, ini mengosongkan properti dictionary_encoding_columns.

      CALL UPDATE_TABLE_PROPERTY('<table_name>','dictionary_encoding_columns','');
    • Parameter

      Parameter

      Deskripsi

      table_name

      Nama tabel. Sensitif terhadap huruf besar/kecil. Dapat mencakup nama skema.

      on

      Mengaktifkan dictionary encoding untuk kolom saat ini.

      off

      Menonaktifkan dictionary encoding untuk kolom saat ini.

      auto

      Hologres secara otomatis menentukan apakah akan menerapkan dictionary_encoding_columns berdasarkan tingkat pengulangan nilai kolom. Pengulangan yang lebih tinggi memberikan manfaat lebih besar. Di V0.8 dan versi sebelumnya, semua kolom text menggunakan dictionary_encoding_columns secara default. Di V0.9 dan versi setelahnya, hal ini ditentukan secara otomatis berdasarkan karakteristik data.

    • Contoh

      • Gunakan UPDATE_TABLE_PROPERTY untuk modifikasi inkremental: aktifkan eksplisit dictionary encoding untuk kolom a, atur kolom b ke auto, dan biarkan kolom lain tidak berubah.

        -- Buat tabel.
        CREATE TABLE public.holo_dict_test (
         a text NOT NULL,
         b text NOT NULL,
         c text NOT NULL,
         d text
        );
        
        -- Periksa properti dictionary_encoding_columns sebelum modifikasi.
        SELECT property_value FROM hologres.hg_table_properties
        WHERE table_name='holo_dict_test' AND property_key='dictionary_encoding_columns';
        -- Hasil berikut dikembalikan: a:auto,b:auto,c:auto,d:auto (Secara default, 'auto' diatur untuk semua kolom text pada tabel baru.)
        
        -- Lakukan modifikasi inkremental: aktifkan eksplisit untuk kolom a, dan atur ke auto untuk kolom b.
        CALL UPDATE_TABLE_PROPERTY('public.holo_dict_test','dictionary_encoding_columns','a:on,b:auto');
        
        -- Periksa properti dictionary_encoding_columns setelah modifikasi.
        SELECT property_value FROM hologres.hg_table_properties
        WHERE table_name='holo_dict_test' AND property_key='dictionary_encoding_columns';
        -- Hasil berikut dikembalikan: b:auto,c:auto,d:auto,a (Hanya a dan b yang dimodifikasi sesuai spesifikasi; c dan d tetap tidak berubah. Akhiran ':on' dihilangkan karena merupakan nilai default. Kolom yang dimodifikasi secara eksplisit dipindahkan ke akhir daftar.)
      • Gunakan SET_TABLE_PROPERTY untuk overwrite penuh: nonaktifkan eksplisit dictionary encoding untuk kolom a. Pengaturan dictionary untuk kolom yang tidak tercantum diatur ulang.

        -- Buat tabel.
        CREATE TABLE public.holo_dict_test_2 (
         a text NOT NULL,
         b text NOT NULL,
         c text NOT NULL,
         d text
        );
        
        -- Periksa properti dictionary_encoding_columns sebelum modifikasi.
        SELECT property_value FROM hologres.hg_table_properties
        WHERE table_name='holo_dict_test_2' AND property_key='dictionary_encoding_columns';
        -- Hasil berikut dikembalikan: a:auto,b:auto,c:auto,d:auto
        
        -- Lakukan modifikasi penuh: nonaktifkan dictionary encoding untuk kolom a. Kolom lain tidak termasuk dalam daftar.
        CALL SET_TABLE_PROPERTY('public.holo_dict_test_2','dictionary_encoding_columns','a:off');
        
        -- Periksa properti dictionary_encoding_columns setelah modifikasi.
        SELECT property_value FROM hologres.hg_table_properties
        WHERE table_name='holo_dict_test_2' AND property_key='dictionary_encoding_columns';
        -- Hasil berikut dikembalikan: b:auto,c:auto,d:auto (Mengatur 'a:off' menghapus kolom a dari daftar. Kolom yang tidak tercantum b, c, dan d diatur ulang ke 'auto'.)
  • Memodifikasi properti bitmap_columns.

    Mulai dari Hologres V0.9, Anda dapat memodifikasi properti bitmap_columns tanpa membuat ulang tabel.

    • Sintaksis

      -- Modifikasi bitmap_columns (untuk V2.1 dan versi setelahnya).
      ALTER TABLE [IF EXISTS] [<schema_name>.]<table_name> SET (bitmap_columns = '[columnName{:[on|off]}[,...]]');
      
      -- Modifikasi bitmap_columns (untuk semua versi).
      -- Modifikasi penuh
      CALL SET_TABLE_PROPERTY('[<schema_name>.]<table_name>', 'bitmap_columns', '[columnName{:[on|off]}[,...]]');
      
      -- Modifikasi inkremental. Hanya kolom yang ditentukan dalam panggilan yang dimodifikasi. Kolom lain tetap tidak berubah.
      CALL UPDATE_TABLE_PROPERTY('[<schema_name>.]<table_name>', 'bitmap_columns', '[columnName{:[on|off]}[,...]]');
      Penting

      Di Hologres V2.0 dan versi setelahnya, menjalankan pernyataan ini dengan nilai kosong mempertahankan properti bitmap_columns. Di versi sebelumnya, ini mengosongkan properti bitmap_columns.

      CALL UPDATE_TABLE_PROPERTY('<table_name>','bitmap_columns','');
    • Parameter

      Parameter

      Deskripsi

      table_name

      Nama tabel. Sensitif terhadap huruf besar/kecil. Dapat mencakup nama skema.

      on

      Mengaktifkan bitmap indexing untuk kolom saat ini.

      off

      Menonaktifkan bitmap indexing untuk kolom saat ini.

    • Contoh

      • Gunakan UPDATE_TABLE_PROPERTY untuk modifikasi inkremental: nonaktifkan bitmap indexing untuk kolom a sambil mempertahankan kolom lain tidak berubah.

        -- Buat tabel.
        CREATE TABLE public.holo_bitmap_test (
         a text NOT NULL,
         b text NOT NULL,
         c text NOT NULL,
         d text
        );
        
        -- Periksa properti bitmap_columns sebelum modifikasi.
        SELECT property_value FROM hologres.hg_table_properties
        WHERE table_name='holo_bitmap_test' AND property_key='bitmap_columns';
        -- Hasil berikut dikembalikan: a,b,c,d (Secara default, ini diaktifkan untuk semua kolom pada tabel baru. Akhiran ':on' dihilangkan karena merupakan nilai default.)
        
        -- Lakukan modifikasi inkremental: nonaktifkan indeks bitmap hanya untuk kolom a.
        CALL UPDATE_TABLE_PROPERTY('public.holo_bitmap_test','bitmap_columns','a:off');
        
        -- Periksa properti bitmap_columns setelah modifikasi.
        SELECT property_value FROM hologres.hg_table_properties
        WHERE table_name='holo_bitmap_test' AND property_key='bitmap_columns';
        -- Hasil berikut dikembalikan: b,c,d (Kolom a dinonaktifkan dan dihapus dari daftar. Kolom b, c, dan d tetap diaktifkan secara default. Akhiran ':on' dihilangkan karena merupakan nilai default.)
      • Gunakan SET_TABLE_PROPERTY untuk overwrite penuh: aktifkan bitmap indexing hanya untuk kolom b. Kolom yang tidak tercantum dihapus.

        -- Buat tabel.
        CREATE TABLE public.holo_bitmap_test_2 (
         a text NOT NULL,
         b text NOT NULL,
         c text NOT NULL,
         d text
        );
        
        -- Periksa properti bitmap_columns sebelum modifikasi.
        SELECT property_value FROM hologres.hg_table_properties
        WHERE table_name='holo_bitmap_test_2' AND property_key='bitmap_columns';
        -- Hasil berikut dikembalikan: a,b,c,d (Secara default, ini diaktifkan untuk semua kolom pada tabel baru. Akhiran ':on' dihilangkan karena merupakan nilai default.)
        
        -- Lakukan modifikasi penuh: aktifkan hanya untuk kolom b. Kolom lain tidak termasuk dalam daftar.
        CALL SET_TABLE_PROPERTY('public.holo_bitmap_test_2','bitmap_columns','b:on');
        
        -- Periksa properti bitmap_columns setelah modifikasi.
        SELECT property_value FROM hologres.hg_table_properties
        WHERE table_name='holo_bitmap_test_2' AND property_key='bitmap_columns';
        -- Hasil berikut dikembalikan: b (Pengaturan indeks bitmap untuk kolom yang tidak tercantum a, c, dan d dihapus. Akhiran ':on' dihilangkan karena merupakan nilai default.)
  • Memodifikasi Time to Live (TTL) tabel.

    • Sintaksis

      call set_table_property('[<schema_name>.]<table_name>', 'time_to_live_in_seconds', '<non_negative_literal>');
    • Parameter

      Parameter

      Deskripsi

      time_to_live_in_seconds

      TTL data tabel dalam detik. Harus berupa bilangan bulat positif tidak kurang dari 86400 (satu hari).

      Catatan

      Penghitungan mundur TTL dimulai saat data ditulis. Data yang kedaluwarsa dihapus secara otomatis tetapi tidak serta-merta langsung dihapus.

    • Contoh

      -- Buat tabel.
      CREATE TABLE public.holo_ttl_test (
       id bigint,
       name text
      );
      
      -- Periksa properti TTL sebelum modifikasi.
      SELECT property_value FROM hologres.hg_table_properties
      WHERE table_name='holo_ttl_test' AND property_key='time_to_live_in_seconds';
      -- Hasil berikut dikembalikan: 3153600000 (Nilai default, kira-kira 100 tahun.)
      
      -- Modifikasi TTL menjadi satu hari (86.400 detik).
      CALL SET_TABLE_PROPERTY('public.holo_ttl_test', 'time_to_live_in_seconds', '86400');
      
      -- Periksa properti TTL setelah modifikasi.
      SELECT property_value FROM hologres.hg_table_properties
      WHERE table_name='holo_ttl_test' AND property_key='time_to_live_in_seconds';
      -- Hasil berikut dikembalikan: 86400 (TTL sekarang diatur menjadi 1 hari.)

Ubah skema tabel

Mulai dari Hologres V1.3, Anda dapat memindahkan tabel antar skema (misalnya, dari schema1 ke schema2) tanpa membuat ulang tabel atau mengimpor data.

  • Sintaksis

    ALTER TABLE [IF EXISTS] [<schema_name>.]<table_name>
        SET SCHEMA <new_schema>;

    schema_name: skema saat ini dari tabel. table_name: tabel yang akan dimodifikasi. new_schema: skema tujuan.

  • Contoh

    Pindahkan tabel bernama schema_demo dari skema public ke skema testschema.

    -- Buat skema tujuan.
    CREATE SCHEMA IF NOT EXISTS testschema;
    
    -- Buat tabel dan masukkan data sampel.
    CREATE TABLE public.schema_demo (
     id bigint PRIMARY KEY,
     name text
    );
    INSERT INTO public.schema_demo VALUES (1, 'alice'), (2, 'bob');
    
    -- Periksa skema tempat tabel berada sebelum pemindahan.
    SELECT table_schema, table_name FROM information_schema.tables
    WHERE table_name='schema_demo';
    -- Hasil berikut dikembalikan: public | schema_demo
    
    -- Pindahkan tabel dari skema public ke skema testschema.
    ALTER TABLE IF EXISTS public.schema_demo SET SCHEMA testschema;
    
    -- Periksa skema tempat tabel berada setelah pemindahan.
    SELECT table_schema, table_name FROM information_schema.tables
    WHERE table_name='schema_demo';
    -- Hasil berikut dikembalikan: testschema | schema_demo
    
    -- Verifikasi bahwa data sepenuhnya dipertahankan.
    SELECT * FROM testschema.schema_demo ORDER BY id;
    -- Hasil berikut dikembalikan: 1, alice / 2, bob

Memodifikasi tabel dengan HoloWeb

HoloWeb menyediakan editor visual untuk memodifikasi kolom dan properti tabel tanpa SQL.

  1. Buka konsol HoloWeb. Sambungkan ke HoloWeb untuk menjalankan kueri.

  2. Pada bilah menu atas halaman HoloWeb, klik Metadata Management.

  3. Pada halaman Metadata Management, temukan instans Anda dalam daftar Instances Connected dan klik ganda tabel target.

  4. Modifikasi kolom dan properti pada halaman detail tabel.

    te111

  5. Klik Submit di pojok kanan atas.