2014-06-30 45 views
0

在DB2中是否存在可用約束,以便當列限制爲特定長度時,在插入之前將值修剪爲適當的長度。例如。如果一列的長度被指定爲5,那麼插入一個值'overflow'將被插入爲'overf'。用於在限制長度內插入值的DB2列約束

在這裏可以使用CHECK約束嗎?我對CHECK約束的理解是它允許插入或不允許它們,但它不能修改值來滿足條件。

回答

0

約束無法做到這一點。

插入觸發器之前的A通常是您在插入期間修改數據的機制,然後再將其插入表中。

但是,我相當肯定它不會在這種情況下工作。你會得到一個SQLCODE -404(SQLSTATE 22001)「指定的Sql語句包含一個太長的字符串。」在觸發器被觸發前拋出。

我看到兩個可能的選項 1)創建一個視圖,將列轉換爲更大的表。然後在視圖上創建一個INSTEAD OF觸發器以在寫入期間對數據進行子串處理。

2)創建並使用一個存儲過程,該存儲過程接受更大的大小並將數據插入子字符串中,然後插入它。