插入数据忽略数据库的约束

时间:2012-05-30 10:11:55

标签: oracle oracle11g validation nullable

我的应用程序有一个复杂的数据模型,其中多个表具有复杂的关系。 UI负责验证用户输入。但是,我有一个要求,即用户希望暂时保存他的数据(作为草稿),这样他就可以继续对其进行一段时间的更改,直到他满意为止。在这种情况下,验证不需要在那里,因为他可能不会立即输入一些强制属性。虽然我可以在这种情况下轻松关闭验证,但数据库级别的NON NULL约束和参照完整性不允许我这样做。

做这样事情的其他合理方法是什么?由于涉及的表很多,我不希望重复它们以允许用户在一些make-shift表中插入数据,直到最终确定他的草稿。

1 个答案:

答案 0 :(得分:2)

看看可延迟的约束:

create table daa_delete_me (col1 number not null deferrable);

alter session set constraints = deferred;

insert into daa_delete_me values (null); -- succeeds

commit; -- fails

insert into daa_delete_me values (null);

update daa_delete_me set col1 = 1;

commit; -- succeeds