DB2中是否存在约束,以便在将列限制为特定长度时,在插入之前将值修剪为适当的长度。对于Eg。如果一个列被指定为长度为5,则插入一个值'overflow'将被插入为'overf'。
可以在这里使用CHECK约束吗?我对CHECK约束的理解是它允许插入或不允许它们但是它不能修改值以满足条件。
答案 0 :(得分:1)
约束不能够做到这一点。
在插入触发器之前,通常是在插入实际放入表中之前用于修改数据的机制。
但是,我确信它在这种情况下不会起作用。你得到一个SQLCODE -404(SQLSTATE 22001)"指定的Sql语句包含一个太长的字符串。"在触发器被触发之前抛出。
我看到两种可能的选择 1)在表格上创建一个视图,其中列被转换为更大的大小。然后在视图上创建一个INSTEAD OF触发器,以便在写入期间对数据进行子串。
2)创建并使用接受更大尺寸的存储过程,然后对数据进行子串,然后插入数据。