默认情况下的SQL函数 - Oracle

时间:2016-02-03 21:02:36

标签: sql oracle

我有一个创建为

的表格
create table test
(test_default number(4));

现在,如果插入值的长度大于4,我必须将默认值8888添加到列中。

我试过了

alter table test modify test_default DEFAULT 8888 when length(test_default)>4  ;

但这不起作用。我不确定是否可以这样做。

2 个答案:

答案 0 :(得分:1)

好吧,如果列大小设置为4,则在尝试输入长度大于4位的数字时会出现ORA-01438: value larger than specified precision allows for this column错误。如果您允许输入更大的值,则触发器就是您想要的(首先将列更改为NUMBER(5)):

create or replace trigger test_BIU
before insert or update
on test
for each row
begin
  if length(:new.test_default) > 4 then
    :new.test_default := 8888;
  end if;
end test_BIU;

现在插入一些数据:

SQL> insert into test values(12345);

1 row created.

SQL> select *
  2  from test;

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

SQL>

答案 1 :(得分:0)

使用alter modify

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