我们如何限制插入时列的长度?

时间:2013-12-17 06:50:26

标签: oracle

我有一个名为&#34的列; EMP_GROUP"在表中,varchar2(30)的长度。 我正在开发一个应用程序,其中许多资源将数据发送到我们的表中。 所以我想限制这个长度为30的列。 目前,当数据来自不同的资源时,它将允许输入长度超过30的记录。

请在这里帮助我如何限制此列只允许输入30个字符,如果数据长度超过30,则不允许。

2 个答案:

答案 0 :(得分:1)

除非在尝试插入之前截断值,否则您将始终获得ORA-12899: value too large for column

这样做的方法是将表隐藏在某种API之后 - 例如所有插入都是通过一个程序调用来完成的,这个程序调用将执或者,您可以在表上创建一个视图,并使用替代触发器来处理截断。

答案 1 :(得分:0)

当您执行INSERT时,您只需要SUBSTR要插入的值。

INSERT INTO my_table ( emp_group )
VALUES ( SUBSTR( p_my_value, 1, 30 ) );

然而,正如Jeffrey指出的那样,您希望在您的应用程序中为这些插入添加单点;您应该应用于API背后的任何DML的概念。在Oracle数据库中使用PL / SQL作为数据访问层似乎是实现这一目标的合理方法。