Tüm Ürünler
Search
Belge Merkezi

Hologres:Default values

Son Güncelleme:Oct 06, 2026

Bu konu, Hologres'in SQL, Flink ve DataWorks Veri Entegrasyonu gibi farklı senaryolarda veri yazarken varsayılan değerleri nasıl işlediğini açıklar.

Temel kural: Bir alan için varsayılan değer yapılandırılmamışsa ve yazma işlemi sırasında bir değer sağlanmamışsa sistem NULL değeri atar. Aşağıdaki tablolar ve bölümler, bu temel davranışın yazma yoluna ve parametrelere bağlı olarak nasıl değiştiğini açıklar.

Davranış özeti

Aşağıdaki tablo, tüm yazma yollarındaki varsayılan değer davranışını özetler. Detaylara inmeden önce beklenen davranışı hızlıca belirlemek için bu tabloyu kullanabilirsiniz.

Yazma yolu Alan türü Varsayılan değer yapılandırılmış mı? Davranış
SQL Null kabul eden Evet Varsayılan değeri atar (alan belirtilmemişse)
SQL Null kabul eden Hayır NULL atar
SQL Null kabul etmeyen Evet Varsayılan değeri atar (alan belirtilmemişse)
Flink — JDBC modu Null kabul eden Hayır NULL atar
Flink — JDBC modu Null kabul eden Evet mutatetype=InsertOrUpdate ise varsayılan değeri atar; aksi takdirde NULL atar
Flink — JDBC modu Null kabul etmeyen Hayır EnableDefaultForNotNullColumn=false ise hata döndürür; true ise veri türüne dayalı bir varsayılan değer atar
Flink — JDBC modu Null kabul etmeyen Evet Varsayılan değeri atar (Hologres motoru hesaplar); V2.0 öncesi sürümlerde bu durum sabit planların kullanılmasını engelleyebilir
Flink — Sabit kopyalama modu Null kabul eden Hayır NULL atar
Flink — Sabit kopyalama modu Null kabul eden Evet Varsayılan değeri atar
Flink — Sabit kopyalama modu Null kabul etmeyen Hayır Hata döndürür
Flink — Sabit kopyalama modu Null kabul etmeyen Evet Varsayılan değeri atar
Flink — BulkLoad modu (HQEcopy) Null kabul eden Hayır NULL atar
Flink — BulkLoad modu (HQEcopy) Null kabul eden Evet Varsayılan değeri atar
Flink — BulkLoad modu (HQEcopy) Null kabul etmeyen Hayır Hata döndürür
Flink — BulkLoad modu (HQEcopy) Null kabul etmeyen Evet Varsayılan değeri atar
DataWorks — DataX toplu iş Null kabul eden Hayır NULL atar
DataWorks — DataX toplu iş Null kabul eden Evet, conflictMode=Replace NULL atar
DataWorks — DataX toplu iş Null kabul eden Evet, conflictMode=Update Varsayılan değeri atar
DataWorks — DataX toplu iş Null kabul etmeyen Hayır, default.enable=true (varsayılan) Veri türüne dayalı bir varsayılan değer atar (örneğin, "" veya 0)
DataWorks — DataX toplu iş Null kabul etmeyen Hayır, default.enable=false Hata döndürür
DataWorks — DataX toplu iş Null kabul etmeyen Evet, default.enable=true (varsayılan) Varsayılan değeri atar
DataWorks — DataX toplu iş Null kabul etmeyen Evet, default.enable=false Varsayılan değeri atar; V2.0 öncesi sürümlerde sabit planlar başarısız olabilir
DataWorks — StreamX gerçek zamanlı Null kabul eden Hayır NULL atar
DataWorks — StreamX gerçek zamanlı Null kabul eden Evet, conflictMode=Replace veya Ignore NULL atar
DataWorks — StreamX gerçek zamanlı Null kabul eden Evet, conflictMode=Update Varsayılan değeri atar
DataWorks — StreamX gerçek zamanlı Null kabul etmeyen Hayır, default.enable=true (varsayılan) Veri türüne dayalı bir varsayılan değer atar (örneğin, "" veya 0)
DataWorks — StreamX gerçek zamanlı Null kabul etmeyen Hayır, default.enable=false Hata döndürür
DataWorks — StreamX gerçek zamanlı Null kabul etmeyen Evet, default.enable=true (varsayılan) Varsayılan değeri atar
DataWorks — StreamX gerçek zamanlı Null kabul etmeyen Evet, default.enable=false Varsayılan değeri atar; V2.0 öncesi sürümlerde sabit planlar başarısız olabilir

SQL senaryoları

Bir alan için varsayılan değer yapılandırılmışsa ve yazma veya güncelleme işlemi sırasında bir değer belirtilmemişse Hologres o alan için varsayılan değeri otomatik olarak atar.

Aşağıdaki örneklerde şu tablo kullanılır:

BEGIN;
CREATE TABLE default_test (
    a int NOT NULL DEFAULT 2023,
    b timestamptz DEFAULT '2023-11-17 10:11:33.276+08',
    PRIMARY KEY (a)
);
COMMIT;

Örnek 1: Her iki sütun için de değer belirtin. Belirtilen değerler varsayılanların üzerine yazılır.

-- Specify values for column a and column b.
INSERT INTO default_test VALUES (1, NULL);
-- Query the table.
SELECT * FROM default_test;

Sonuç:

a    b
1    \N

Örnek 2: b sütununu atlayın. Sistem b sütunu için varsayılan değeri atar.

-- Omit column b.
INSERT INTO default_test (a) VALUES (2);
-- Query the table.
SELECT * FROM default_test;

Sonuç:

a    b
1    \N
2    2023-11-17 10:11:33.276+08

Örnek 3: a sütununu (birincil anahtar) belirtmeden INSERT ON CONFLICT DO NOTHING çalıştırın. Sistem b sütununun değerini yazar ve a sütunu için varsayılan değeri atar.

-- Column a is omitted; the system fills the default value (2023).
INSERT INTO default_test (b) VALUES ('2023-11-18 10:11:33.276+08') ON CONFLICT (a) DO NOTHING;
-- Query the table.
SELECT * FROM default_test;

Sonuç:

a       b
2       2023-11-17 10:11:33.276+08
2023    2023-11-18 10:11:33.276+08
1       \N

Örnek 4: Her iki sütun için açık değerlerle INSERT ON CONFLICT DO UPDATE çalıştırın. Belirtilen değerler varsayılanların üzerine yazılır.

-- Specify values for both columns; specified values take precedence.
INSERT INTO default_test (a, b) VALUES (2, null) ON CONFLICT (a) DO UPDATE SET (a,b) = ROW(EXCLUDED.*);
-- Query the table.
SELECT * FROM default_test;

Sonuç:

a       b
1       \N
2023    2023-11-18 10:11:33.276+08
2       \N

Örnek 5: Yalnızca b sütununu güncelleyen INSERT ON CONFLICT DO UPDATE çalıştırın. a sütunu güncellenmez.

-- Only column b is updated; column a remains unchanged.
INSERT INTO default_test (a, b) VALUES (2023, null) ON CONFLICT (a) DO UPDATE SET b = EXCLUDED.b;
-- Query the table.
SELECT * FROM default_test;

Sonuç:

a       b
2       \N
1       \N
2023    \N

Flink kullanarak veri yazma

Flink yazma modları hakkında daha fazla bilgi için bkz. Hologres.

JDBC modu

Değer belirtilmeyen alanlar için aşağıdaki kurallar geçerlidir.

Null kabul eden alanlar

  • Varsayılan değer yapılandırılmamışsa sistem NULL atar.

  • Varsayılan değer yapılandırılmışsa mutatetype parametresi InsertOrUpdate olarak ayarlandığında sistem varsayılan değeri atar; aksi takdirde sistem NULL atar.

Null kabul etmeyen alanlar

  • Varsayılan değer yapılandırılmamışsa:

    • EnableDefaultForNotNullColumn=false ise sistem hata döndürür.

    • EnableDefaultForNotNullColumn=true ise Holo Client veri türüne dayalı bir varsayılan değer atar (örneğin, boş dize "").

  • Varsayılan değer yapılandırılmışsa:

    • EnableDefaultForNotNullColumn=false ise Hologres motoru varsayılan değeri hesaplar ve yazar. Hologres V2.0 öncesi sürümlerde bu durum sabit planların kullanılmasını engelleyebilir ve performans sorunlarına neden olabilir.

    • EnableDefaultForNotNullColumn=true ise Holo Client veri türüne dayalı bir varsayılan değer atar.

Hologres örneğinizi manuel olarak yükseltebilir veya yükseltme başvurusunda bulunmak üzere Hologres DingTalk grubuna katılabilirsiniz. Daha fazla bilgi için Örnek yükseltme konusundaki "Manuel yükseltme" bölümüne bakın. Çevrimiçi destek almak için Hologres için çevrimiçi destek alma konusuna bakın.

Sabit kopyalama modu

Bu modda yalnızca UPDATE ve IGNORE işlemleri desteklenir. Belirli alanları güncellediğinizde yalnızca bu alanlar güncellenir; diğer tüm alanlar değişmeden kalır. REPLACE etkisi elde etmek için Flink DDL ifadesinde tüm alanları bildirin.

Değer belirtilmeyen alanlar için aşağıdaki kurallar geçerlidir.

Null kabul eden alanlar

  • Varsayılan değer yapılandırılmamışsa sistem NULL atar.

  • Varsayılan değer yapılandırılmışsa sistem varsayılan değeri atar.

Null kabul etmeyen alanlar

  • Varsayılan değer yapılandırılmamışsa sistem hata döndürür.

  • Varsayılan değer yapılandırılmışsa sistem varsayılan değeri atar.

BulkLoad modu (HQEcopy)

Bu modda UPDATE işlemleri desteklenmez. Değer belirtilmeyen alanlar için aşağıdaki kurallar geçerlidir.

Null kabul eden alanlar

  • Varsayılan değer yapılandırılmamışsa sistem NULL atar.

  • Varsayılan değer yapılandırılmışsa sistem varsayılan değeri atar.

Null kabul etmeyen alanlar

  • Varsayılan değer yapılandırılmamışsa sistem hata döndürür.

  • Varsayılan değer yapılandırılmışsa sistem varsayılan değeri atar.

DataWorks Veri Entegrasyonu kullanarak veri yazma

DataX tabanlı toplu eşitleme

Veri Entegrasyonunun DataX bileşeni, bir tablodan veya veritabanından toplu eşitlemeyi destekler. Daha fazla bilgi için bkz. Hologres veri kaynağı. JDBC modu otomatik olarak kullanılır. Değer belirtilmeyen alanlar için aşağıdaki kurallar geçerlidir.

Null kabul eden alanlar

  • Varsayılan değer yapılandırılmamışsa sistem NULL atar.

  • Varsayılan değer yapılandırılmışsa:

    • conflictMode=Replace ise sistem NULL atar.

    • conflictMode=Update ise sistem varsayılan değeri atar.

Null kabul etmeyen alanlar

  • Varsayılan değer yapılandırılmamışsa:

    • default.enable=true (varsayılan) ise Holo Client veri türüne dayalı bir varsayılan değer atar (örneğin, boş dize "" veya 0).

    • default.enable=false ise sistem hata döndürür.

  • Varsayılan değer yapılandırılmışsa:

    • default.enable=true (varsayılan) ise sistem varsayılan değeri atar.

    • default.enable=false ise sistem yine de varsayılan değeri atar. Hologres V2.0 öncesi sürümlerde sabit planlar kullanılamayabilir ve performans sorunları oluşabilir.

StreamX tabanlı gerçek zamanlı eşitleme

Veri Entegrasyonunun StreamX bileşeni, bir tablodan gerçek zamanlı eşitlemeyi destekler. Daha fazla bilgi için bkz. Hologres veri kaynağı. JDBC modu otomatik olarak kullanılır. Değer belirtilmeyen alanlar için aşağıdaki kurallar geçerlidir.

Null kabul eden alanlar

  • Varsayılan değer yapılandırılmamışsa sistem NULL atar.

  • Varsayılan değer yapılandırılmışsa:

    • conflictMode=Replace veya conflictMode=Ignore ise sistem NULL atar.

    • conflictMode=Update ise sistem varsayılan değeri atar.

Null kabul etmeyen alanlar

  • Varsayılan değer yapılandırılmamışsa:

    • default.enable=true (varsayılan) ise Holo Client veri türüne dayalı bir varsayılan değer atar (örneğin, boş dize "" veya 0).

    • default.enable=false ise sistem hata döndürür.

  • Varsayılan değer yapılandırılmışsa:

    • default.enable=true (varsayılan) ise sistem varsayılan değeri atar.

    • default.enable=false ise sistem yine de varsayılan değeri atar. Hologres V2.0 öncesi sürümlerde sabit planlar kullanılamayabilir ve performans sorunları oluşabilir.

Hologres örneğinizi manuel olarak yükseltebilir veya yükseltme başvurusunda bulunmak üzere Hologres DingTalk grubuna katılabilirsiniz. Daha fazla bilgi için Örnek yükseltme konusundaki "Manuel yükseltme" bölümüne bakın. Çevrimiçi destek almak için Hologres için çevrimiçi destek alma konusuna bakın.

Holo Client varsayılan değer eşlemesi

Flink veya DataWorks Veri Entegrasyonu ile JDBC modunda veri yazdığınızda yazma katmanını Holo Client yönetir. Veri yazarken belirli alanlar için değerler belirtirseniz default.enable parametresi otomatik olarak true değerine (enableDefaultForNotNullColumn=true ile eşdeğer) ayarlanır. Bir alan için değer yoksa ve yapılandırılmış bir varsayılan değer bulunmuyorsa Holo Client veri türüne dayalı bir varsayılan değeri otomatik olarak atar. Aşağıdaki tabloda bu varsayılan değerler listelenmiştir.

Tür Holo Client tarafından atanan varsayılan
SMALLINT 0
INTEGER 0
BIGINT 0
REAL 0,0
DOUBLE PRECISION 0,0
DECIMAL 0
BOOLEAN false
VARCHAR(n) "" (boş dize)
CHAR(n) "" (boş dize)
TEXT "" (boş dize)
TIMESTAMPTZ 1970-01-01 08:00:00
TIMESTAMP 1970-01-01 08:00:00
DATE 1970-01-01
TIMETZ 08:00:00
TIME 08:00:00
JSON ve JSONB Varsayılan değer yazılamaz
BYTEA Varsayılan değer yazılamaz
RoaringBitmap Varsayılan değer yazılamaz
BIT(n) Varsayılan değer yazılamaz
VARBIT(n) Varsayılan değer yazılamaz
INTERVAL Varsayılan değer yazılamaz