2

私のアプリケーションには、複雑な関係を持つ複数のテーブルを持つ複雑なデータ モデルがあります。UI は、ユーザー入力の検証を処理します。ただし、ユーザーが満足するまでしばらくの間、データを変更し続けることができるように、データを一時的に (ドラフトとして) 保存する必要があるという要件があります。そのような場合、彼はいくつかの必須属性をすぐに入力しない可能性があるため、検証はそこにある必要はありません。このような場合、検証を簡単にオフにすることができますが、NON NULL 制約とデータベース レベルの参照整合性では、そうすることができません。

そのようなことを行うための他のもっともらしい方法は何ですか? 関連するテーブルが非常に多いため、下書きが完成するまで、ユーザーがその場しのぎのテーブルにデータを挿入できるように、テーブルを複製したくありません。

4

1 に答える 1

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
于 2012-05-30T10:28:34.673 に答える