4

この質問はデータベース理論のごく初期の段階に属することを私は知っていますが、私は数ヶ月以来そのような問題に遭遇していません。誰かが外部キーを持つ「チェーン」として一緒に関連付けられたいくつかのテーブルを持つデータベースを持っていて、いくつかの「依存」テーブルを持つテーブルからレコードを削除したい場合、どのような障害が発生しますか?特に、Person、Profile、Preference、Filterのテーブルを持つデータベースではPerson.id、すべての関連付けがであるように、Profile外部キー入力、外部キー入力、外部キー入力のProfile.idようPreferenceに関連付けが存在します。簡単なクエリでPersonを削除することは可能ですか?Filter.idPreferenceenter code hereOneToMany

Delete from Person p where p.id= 34;

いいえの場合、削除を正常に実行するには、クエリのようになりますか?annotationsアプリケーションのデータベースがHibernateによって管理されている場合、上記の単純なクエリで削除を実行できるようにするには、各エンティティの関連フィールドに どのような制約( )を適用する必要がありますか?

4

2 に答える 2

2

SQLバージョンの場合

ここに画像の説明を入力してください

スクリーンショットを見てください。更新仕様の挿入ルールを使用できます。削除ルールと更新ルールがあるため。これらの値のいずれかを設定できます。

外部キー制約は、主キーまたは一意キーを参照することで作成できます。外部キー制約により、関連するテーブルのデータのリレーショナル整合性が保証されます。外部キー値はNULLである可能性があり、特定のレコードに親レコードがないことを示します。ただし、値が存在する場合は、親テーブルに値が関連付けられている必要があります。親テーブルに更新または削除操作を適用する場合、子テーブルの関連する値への影響について異なる要件が存在する場合があります。SQL Server 2005および2008では、次の4つのオプションを使用できます。

No Action
Cascade
SET NULL
SET Default

Refrenceにこの記事を使用してください。

http://www.mssqltips.com/sqlservertip/2365/sql-server-foreign-key-update-and-delete-rules/

ORACLEバージョン

以下のいずれかを使用できます。

表sample1の変更外部キー(col1)の追加は、アクションなしの削除時にサンプル(col2)を参照します。

表sample1の変更外部キー(col1)の追加は、deleterestrictでサンプル(col2)を参照します。

表sample1を変更し、カスケードの削除時に外部キー(col1)参照サンプル(col2)を追加します。

参照用。

http://docs.oracle.com/cd/B19306_01/server.102/b14200/clauses002.htm

于 2012-10-12T12:08:39.863 に答える
0

外部キー制約がある場合、答えはノーです。最初にリーフノードテーブルデータを削除する必要があります

Preferenceそれは最初にテーブルから削除されます

次にProfile and Filterテーブルから

次に、からレコードを削除しますPerson table

これは、どこにでも適用できる一般的な概念です

于 2012-10-12T11:58:40.637 に答える