Pernyataan ALTER TABLE mengubah definisi suatu tabel. Modifikasi pada tabel induk secara otomatis diterapkan ke tabel anaknya.
Batasan
Hologres mendukung modifikasi tabel berikut:
-
Saat menambahkan kolom dengan
ALTER TABLE ADD COLUMN, jumlah total kolom tidak boleh melebihi batas maksimum 6.400. -
Anda dapat mengganti nama tabel, menambahkan kolom, dan memodifikasi Time to Live (TTL).
-
Anda dapat memodifikasi nilai default kolom serta properti
dictionary_encoding_columnsdanbitmap_columns.
Catatan penggunaan
Memodifikasi properti tabel seperti dictionary_encoding_columns, bitmap_columns, atau time_to_live_in_seconds dapat memicu proses kompaksi latar belakang. Proses ini mengonsumsi sumber daya CPU dan dapat menyebabkan peningkatan sementara pada penyimpanan instans, yang kemudian kembali normal.
Ubah tipe data
Di Hologres V3.0 dan versi setelahnya, Anda dapat mengubah tipe data kolom pada tabel internal.
-
Batasan
-
Anda dapat mengubah tipe kolom pada tabel non-partisi dan tabel induk, tetapi tidak pada tabel anak.
-
Anda tidak dapat mengubah tipe data kolom partisi pada tabel induk.
-
Klausa
COLLATEdanUSINGtidak 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 -- Ubah 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
Anda dapat menggunakan pernyataan ALTER TABLE untuk mengganti nama tabel. Operasi ini gagal jika tabel tidak ada atau nama baru sudah digunakan.
Anda tidak dapat mengganti nama tabel lintas skema yang 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
Anda dapat menggunakan pernyataan ALTER TABLE untuk menambahkan kolom ke tabel. Kolom baru selalu ditambahkan di akhir tabel.
-
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 struktur kolom sebelum menambahkan kolom baru. 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 struktur kolom 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 struktur kolom 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)
Di Hologres V2.0 dan versi setelahnya, 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 pemecahan masalah umum persiapan upgrade atau hubungi kami untuk bantuan. Untuk informasi lebih lanjut, lihat Bagaimana cara mendapatkan dukungan online lebih lanjut?.
-
Untuk tabel partisi, Anda hanya dapat menghapus kolom dari tabel induk. Tindakan ini secara otomatis menghapus kolom yang sesuai dari semua tabel anaknya. Operasi ini intensif sumber daya dan sebaiknya dilakukan pada 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 ditentukan dalam properti
event_time_column. -
Anda tidak dapat menghapus kolom dari tabel eksternal.
-
Menghapus kolom terkait JSONB juga menghapus indeks terkaitnya.
-
Menghapus kolom proxima_vector memerlukan parameter
cascade. -
Menghapus kolom SERIAL juga menghapus sequence yang dibuat untuknya.
-
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
PentingFitur ini tidak didukung di versi Hologres sebelum V2.0.
set hg_experimental_enable_drop_column = on; -- Aktifkan fitur ini dengan 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 dengan 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
Di Hologres V1.1 dan versi setelahnya, Anda dapat mengganti nama kolom.
-
Jika instans Anda menjalankan versi sebelum V1.1, lihat pemecahan masalah umum persiapan upgrade atau hubungi kami untuk bantuan. Untuk informasi lebih lanjut, lihat Bagaimana cara mendapatkan dukungan online lebih lanjut?.
-
Untuk tabel partisi, Anda hanya dapat mengganti nama kolom pada tabel induk. Perubahan ini secara otomatis diterapkan 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
Ubah nilai default
Anda dapat menggunakan pernyataan ALTER TABLE untuk mengubah nilai default kolom. Nilai default dapat berupa konstanta atau ekspresi konstanta. Perubahan ini hanya berlaku untuk operasi INSERT dan UPDATE berikutnya; tidak mengubah data yang sudah ada. Fitur ini hanya tersedia di Hologres V0.9.23 dan versi setelahnya.
-
Sintaksis
-- Ubah 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. 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 -- Ubah nilai default kolom id menjadi 0. ALTER TABLE IF EXISTS public.holo_default ALTER COLUMN id SET DEFAULT 0; -- Periksa nilai default yang telah diubah. 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
Ubah properti tabel
Anda dapat memodifikasi properti tabel dengan menggunakan pernyataan yang dijelaskan di bawah ini:
-
Ubah properti dictionary_encoding_columns. Mengubah pengaturan encoding kamus memicu proses re-encoding data yang mengonsumsi CPU dan memori. Lakukan perubahan ini pada jam sepi.
-
Sintaksis
-- Ubah 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. -- Ubah 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 yang diubah. Kolom lain tetap tidak berubah. CALL UPDATE_TABLE_PROPERTY('[<schema_name>.]<table_name>', 'dictionary_encoding_columns', '[columnName{:[on|off|auto]}[,...]]');PentingDi Hologres V2.0 dan versi setelahnya, menjalankan pernyataan
UPDATE_TABLE_PROPERTYdengan nilai kosong mempertahankan propertidictionary_encoding_columns. Di versi sebelumnya, tindakan yang sama mengosongkan propertidictionary_encoding_columns.CALL UPDATE_TABLE_PROPERTY('<table_name>','dictionary_encoding_columns',''); -
Parameter
Parameter
Deskripsi
table_name
Nama tabel target. Nama bersifat case-sensitive dan dapat disertai kualifikasi skema.
on
Mengaktifkan properti dictionary_encoding_columns untuk kolom yang ditentukan.
off
Menonaktifkan properti dictionary_encoding_columns untuk kolom yang ditentukan.
auto
Hologres secara otomatis menentukan apakah akan menerapkan dictionary_encoding_columns berdasarkan laju pengulangan nilai dalam kolom. Laju pengulangan yang lebih tinggi memberikan manfaat lebih besar dari encoding kamus. Di Hologres V0.8 dan versi sebelumnya, properti dictionary_encoding_columns diaktifkan secara default untuk semua kolom
text. Di Hologres V0.9 dan versi setelahnya, encoding kamus diaktifkan berdasarkan karakteristik data. -
Contoh
-
Gunakan
UPDATE_TABLE_PROPERTYuntuk modifikasi inkremental: aktifkan secara eksplisit encoding kamus untuk koloma, atur kolombke 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 secara 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_PROPERTYuntuk overwrite penuh: nonaktifkan secara eksplisit encoding kamus untuk koloma. Pengaturan kamus untuk kolom yang tidak tercantum direset.-- 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 encoding kamus hanya 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 direset ke 'auto'.)
-
-
-
Ubah properti bitmap_columns.
Di Hologres V0.9 dan versi setelahnya, Anda dapat memodifikasi properti bitmap_columns tanpa membuat ulang tabel.
-
Sintaksis
-- Ubah bitmap_columns (untuk V2.1 dan versi setelahnya). ALTER TABLE [IF EXISTS] [<schema_name>.]<table_name> SET (bitmap_columns = '[columnName{:[on|off]}[,...]]'); -- Ubah 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 yang diubah. Kolom lain tetap tidak berubah. CALL UPDATE_TABLE_PROPERTY('[<schema_name>.]<table_name>', 'bitmap_columns', '[columnName{:[on|off]}[,...]]');PentingDi Hologres V2.0 dan versi setelahnya, menjalankan pernyataan
UPDATE_TABLE_PROPERTYdengan nilai kosong mempertahankan propertibitmap_columns. Di versi sebelumnya, hal ini mengosongkan propertibitmap_columns.CALL UPDATE_TABLE_PROPERTY('<table_name>','bitmap_columns',''); -
Parameter
Parameter
Deskripsi
table_name
Nama tabel target. Nama bersifat case-sensitive dan dapat disertai kualifikasi skema.
on
Mengaktifkan properti bitmap_columns untuk kolom yang ditentukan.
off
Menonaktifkan properti bitmap_columns untuk kolom yang ditentukan.
-
Contoh
-
Gunakan
UPDATE_TABLE_PROPERTYuntuk modifikasi inkremental: nonaktifkan indeks bitmap hanya untuk koloma, dan biarkan kolomb,c, dandtidak berubah. Secara default, indeks bitmap diaktifkan secara otomatis untuk semua kolom pada tabel baru.-- 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_PROPERTYuntuk overwrite penuh: aktifkan indeks bitmap hanya untuk kolomb. Indeks bitmap untuk kolom yang tidak tercantuma,c, danddihapus.-- 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.)
-
-
-
Ubah 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
Time to Live (TTL) data tabel, dalam detik. Nilainya harus berupa bilangan bulat yang lebih besar dari atau sama dengan 86.400 (satu hari).
CatatanPenghapusan data yang kedaluwarsa bersifat otomatis tetapi mungkin tertunda.
-
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, sekitar 100 tahun.) -- Ubah 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. Hal ini memungkinkan Anda mengubah skema tabel dengan cepat.
-
Sintaksis
ALTER TABLE [IF EXISTS] [<schema_name>.]<table_name> SET SCHEMA <new_schema>;schema_name: skema saat ini dari tabel.table_name: nama tabel yang akan dipindahkan.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 dipindahkan. 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 dipindahkan. 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
Ubah tabel di HoloWeb
Anda juga dapat menggunakan editor visual HoloWeb untuk memodifikasi kolom dan properti tabel tanpa menulis SQL. Untuk melakukannya, ikuti langkah-langkah berikut:
-
Buka konsol HoloWeb. Untuk informasi lebih lanjut, lihat Hubungkan ke HoloWeb dan jalankan kueri SQL.
-
Pada bilah menu atas halaman HoloWeb, klik Metadata Management.
-
Pada halaman Metadata Management, temukan instans Anda dalam daftar Instances Connected di sebelah kiri dan klik ganda tabel target.
-
Pada halaman detail tabel, Anda dapat memodifikasi kolom dan beberapa properti tabel secara visual.
Pada tab Columns, Anda dapat melihat semua informasi kolom. Untuk menambahkan kolom, klik Add Column di bagian bawah, lalu masukkan nama dan tipe data pada baris baru yang muncul.
-
Klik Submit di pojok kanan atas untuk menerapkan perubahan Anda.