固定點數的精確度與小數位數
不同的資料庫支援固定點數類型的不同最大精確度或縮放比例。
如果來源固定點數類型支援比目標更大的精確度或小數位數,且非 KEY 資料欄可能的資料截斷,則會顯示警告訊息,並在目標上使用適當的字串資料類型以避免資料截斷。不過,如果要預見固定點編號類型之 KEY 資料欄的資料截斷,Replicat 會異常中止並顯示對應的錯誤訊息。您必須選擇 AUTOSCHEMAOPTIONS TYPEMAP 或使用 AUTOSCHEMAOPTIONS IGNORE_DATA_TRUNCATION 繼續。
下列案例描述這些選項的使用方式:
-
如果資料截斷是以使用者指定的選項 (
AUTOSCHEMAOPTIONS TYPEMAP或AUTOSCHEMAOPTIONS IGNORE_DATA_TRUNCATION) 來預見,則資料會被截斷並顯示對應的警告訊息。舉例而言:
MySQL 的小數精確度上限為 65,但 Oracle 為 38。因此,
DECIMAL(65,10)將對應至 Oracle 中的VARCHAR2。如果來源比例超過目標精確度,則會自動調整目標比例以維持精確度 / 比例比率。
舉例而言:
使用
AUTOSCHEMAOPTIONS IGNORE_DATA_TRUNCATION時,MySQL 的DECIMAL(65,40)將對應至 Oracle 上的NUMBER(38,23),而 MySQL 的DECIMAL(65,64)將對應至 Oracle 上的NUMBER(38,37)。 -
不含任何明確精確度和縮放比例的
NUMBER類型會以下列方式處理:只有 Oracle 和 TimesTen 才支援
NUMBER類型。在預覽版本中,不支援 TimesTen。如果來源資料類型為NUMBER(沒有任何明確的精確度或小數位數),且目標資料庫也支援NUMBER資料類型,則目標上會使用目標NUMBER類型。如果目標資料庫不支援
NUMBER資料類型,則目標上會使用適合的字串類型,例如VARCHAR或VARCHAR2。範例:
NUMBER(5,-2)對應至DECIMAL(7,0)NUMBER(1,2)對應至DECIMAL(2,2) -
如果來源資料欄上使用的精確度或小數位數超過目標支援的小數位數,且對應的資料欄為索引鍵的一部分,則可以在目標上使用字串類型,以避免目標上的資料截斷,進而擊敗目標表格上的唯一性特性。這可由
AUTOSCHEMAOPTIONS參數控制。