2014-06-30 43 views
0

在DB2中是否存在可用约束,以便当列限制为特定长度时,在插入之前将值修剪为适当的长度。例如。如果一列的长度被指定为5,那么插入一个值'overflow'将被插入为'overf'。用于在限制长度内插入值的DB2列约束

在这里可以使用CHECK约束吗?我对CHECK约束的理解是它允许插入或不允许它们,但它不能修改值来满足条件。

回答

0

约束无法做到这一点。

插入触发器之前的A通常是您在插入期间修改数据的机制,然后再将其插入表中。

但是,我相当肯定它不会在这种情况下工作。你会得到一个SQLCODE -404(SQLSTATE 22001)“指定的Sql语句包含一个太长的字符串。”在触发器被触发前抛出。

我看到两个可能的选项 1)创建一个视图,将列转换为更大的表。然后在视图上创建一个INSTEAD OF触发器以在写入期间对数据进行子串处理。

2)创建并使用一个存储过程,该存储过程接受更大的大小并将数据插入子字符串中,然后插入它。