XOR是否适用于oracle 11g中的触发器和检查约束?

时间:2018-03-07 19:08:49

标签: oracle oracle11g triggers

我试图找出是否可以在触发器和检查约束中使用XOR。我已经看到了PL / SQL中的实现,但是如果可以在触发器和检查约束中使用XOR函数,则还没有完全弄清楚它。 我试图在check-constraint中使用它:

 CREATE TABLE my_table
 (
    tableid          NUMBER  PRIMARY KEY,
    foreignkey1      NUMBER,
    foreignkey2      NUMBER,
    CONSTRAINT check_anleger CHECK( XOR( foreignkey1 IS NULL, foreignkey2 IS NULL));
 );

但遗憾的是它没有用(得到了一个“缺少右括号”-Exception,只有当我删除了约束命令时才解决)。

XOR功能是否适用于触发器和检查约束?

1 个答案:

答案 0 :(得分:3)

Oracle数据库(与PL / SQL相反)没有开始的布尔数据类型,因此它不支持XOR等逻辑功能。这意味着您不能在约束中使用它。但您可以重写条件,只需使用标准andornot和括号。触发器(主要是)PL / SQL,因此XOR应该可用。但是,如果您可以使用约束而不是触发器执行某些操作,那么即使代码更麻烦,这几乎总是更好的选择。