我正在尝试在oracle中创建一个表,它将接受2个且只有2个字符。我尝试使用char(2),但如果我在insert语句中输入1个字符,它将接受它。如何让oracle只接受2个精确字符的任何插入并拒绝1和3及更高的字符?我在互联网上搜索过,似乎无法找到答案。
谢谢! 克里斯托弗
答案 0 :(得分:11)
您可以创建一个强制执行此限制的CHECK约束
SQL> create table foo (
2 col1 varchar2(2) NOT NULL
3 ,check( length(col1) = 2 )
4 );
Table created.
SQL> insert into foo values( 'ab' );
1 row created.
SQL> ed
Wrote file afiedt.buf
1* insert into foo values( 'a' )
SQL> /
insert into foo values( 'a' )
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.SYS_C0022134) violated
答案 1 :(得分:0)
您可以使用预插入触发器来检查长度 - 我无法想到防止单个字符的方法。