0

我想在插入表之前检查数据的值。比如,如果像“或&”这样的东西出现在数据中,它应该忽略它或使用一些转义序列插入。

create table test (checkit varchar2(40));
insert into test values("Here is the & test data");

或者

insert into test values("Here is the " test data");

有没有办法在 oracle 中做到这一点?谢谢

编辑

我想知道解决方案,尤其是对于像 & 、 " 等字符的解决方案,而不是示例中所示的普通数据。

4

1 回答 1

1

您可以使用BEFORE trigger来做到这一点。


这是一个用 &&和 " 替换"的例子。

SET DEFINE OFF;
drop table test;
create table test (checkit varchar2(60));


CREATE OR REPLACE TRIGGER validateTest
  BEFORE DELETE OR INSERT OR UPDATE ON test
  FOR EACH ROW
BEGIN
  :new.checkit := replace(:new.checkit, '&', '&lte;');
  :new.checkit := replace(:new.checkit, '"', '"');
END;
/

insert into test (checkit) values ('Here is the & test "data"');
select * from test;

输出:

drop table test succeeded.
create table succeeded.
TRIGGER validateTest Compiled.
1 rows inserted
CHECKIT                                                      
------------------------------------------------------------ 
Here is the &lte; test "data"                    

1 rows selected

显然替换字符串可以是任何东西。

于 2012-07-25T06:16:30.530 回答