【发布时间】:2014-06-30 13:02:37
【问题描述】:
在 DB2 中是否存在可用的约束,即当列被限制为特定长度时,在插入之前将值修剪为适当的长度。例如。如果指定列的长度为 5 ,则插入值 'overflow' 将插入为 'overf'。
这里可以使用 CHECK 约束吗?我对 CHECK 约束的理解是它允许插入或不允许插入,但它不能修改值以满足条件。
【问题讨论】:
标签: db2 constraints ddl
在 DB2 中是否存在可用的约束,即当列被限制为特定长度时,在插入之前将值修剪为适当的长度。例如。如果指定列的长度为 5 ,则插入值 'overflow' 将插入为 'overf'。
这里可以使用 CHECK 约束吗?我对 CHECK 约束的理解是它允许插入或不允许插入,但它不能修改值以满足条件。
【问题讨论】:
标签: db2 constraints ddl
约束无法做到这一点。
插入前触发器通常是您在插入期间用于在数据实际放入表中之前修改数据的机制。
但是,我有理由确定它在这种情况下不起作用。你会得到一个 SQLCODE -404 (SQLSTATE 22001) “指定的 Sql 语句包含一个太长的字符串。”在触发器被触发之前抛出。
我看到了两种可能的选择 1)在表上创建一个视图,其中列被转换为更大的大小。然后在视图上创建一个 INSTEAD OF 触发器,以便在写入期间对数据进行子串化。
2) 创建并使用一个存储过程,该过程接受更大的大小并将数据子串化,然后将其插入。
【讨论】: