我试图找出是否可以在触发器和检查约束中使用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功能是否适用于触发器和检查约束?
答案 0 :(得分:3)
Oracle数据库(与PL / SQL相反)没有开始的布尔数据类型,因此它不支持XOR等逻辑功能。这意味着您不能在约束中使用它。但您可以重写条件,只需使用标准and
,or
,not
和括号。触发器(主要是)PL / SQL,因此XOR应该可用。但是,如果您可以使用约束而不是触发器执行某些操作,那么即使代码更麻烦,这几乎总是更好的选择。