我有一个创建为
的表格create table test
(test_default number(4));
现在,如果插入值的长度大于4,我必须将默认值8888添加到列中。
我试过了
alter table test modify test_default DEFAULT 8888 when length(test_default)>4 ;
但这不起作用。我不确定是否可以这样做。
答案 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 );