默认情况下的SQL函数-Oracle

默认情况下的SQL函数-Oracle,sql,oracle,Sql,Oracle,我创建了一个表作为 create table test (test_default number(4)); 现在,如果插入值的长度大于4,我必须向列中添加默认值8888 我试过了 alter table test modify test_default DEFAULT 8888 when length(test_default)>4 ; 但这是行不通的。我不确定这是否能做到 使用alter modify alter table test modify( test_default

我创建了一个表作为

create table test
(test_default number(4));
现在,如果插入值的长度大于4,我必须向列中添加默认值8888

我试过了

alter table test modify test_default DEFAULT 8888 when length(test_default)>4  ;
但这是行不通的。我不确定这是否能做到

使用alter modify

 alter table test   modify( test_default number(4) default 888 );

好的,如果列大小设置为4,您将得到一个
ORA-01438:大于指定精度的值。当尝试输入长度大于4位的数字时,允许此列出现
错误。如果您允许输入更大的值,那么触发器就是您想要的(首先将列更改为数字(5)):

现在插入一些数据:

SQL> insert into test values(12345);

1 row created.

SQL> select *
  2  from test;

TEST_DEFAULT
------------
        8888

SQL>
SQL> insert into test values(12345);

1 row created.

SQL> select *
  2  from test;

TEST_DEFAULT
------------
        8888

SQL>