有个表里有3个字段,其中1个字段是时间"2013-2"。把这个字段设为主键,目的是每次插值的时候,如果插入的值和时间字段相同就不插入。当我用java往这个表里插值的时候,虽然相同的时间不会往表里插值,但是java报错了java.sql.SQLException: ORA-00001: unique constraint (ULTRANMS.PK_TIMEMARKSRANK) violated.虽然不管它也行,但是总是不舒服。
有什么办法往表里插值时,判断一下,如果插入值和字符型时间字段相同就不插入?不想用程序写判断,就想在oracle里设置一下(这样简单点),可以吗?
有什么办法往表里插值时,判断一下,如果插入值和字符型时间字段相同就不插入?不想用程序写判断,就想在oracle里设置一下(这样简单点),可以吗?
dbms_errlog.create_error_log(dml_table_name => 't',
err_log_table_name => 't_err');
end;
insert into t
select name
from (select 'a1' name
from dual
union all
select 'a2'
from dual
union all
select null from dual) log errors
into t_err('test') REJECT LIMIT UNLIMITED;
--UNLIMITED也可以写成其他数字,比如10,代表如果有超过10条的错误记录,则不能往t表中插入数据。不过即使超过了10条错误记录,t_err里总会插入错误的数据进去。
commit;