[解決済み] SQLで行を削除すると、"ORA-02292: 整合性制約 (...) に違反しました - 子レコードが見つかりました" と返される。
2022-03-03 04:26:01
質問
4つのテーブルからなるデータベースを持っています。関係スキーマは以下の通りです。
そして、これが行です。
次に、オーナーIDを持つオーナーを削除しようとしています。
OW1
. このidはownerテーブルの主キーであり、他のテーブルの外部キーであるため、その行を削除することができないのです。以下は、私が試したSQLです。
delete from owners
where ownerid = 'OW1' and petid = 'PT1'
そして、それは.を返します。
ORA-02292: integrity constraint (TEST_1.ADDRESSES_OWNERS_FK) violated - child record found
また、リレーションシップ図で削除ルールを「CASCADE」に設定することができません。 助けてください :(
どうすればいいですか?
まあ、匿名ブロックが1つのステートメントとしてカウントされるなら、削除をブロックにラップすればいいだけです。
begin
delete from addresses where ownerid = 'OW1';
delete from contacts where ownerid = 'OW1';
delete from pets where ownerid = 'OW1';
delete from owners where ownerid = 'OW1';
end;
/
SQLフィドル . ちょっとズルい気もするけど、これが与えられた条件なら...。
関連
-
[解決済み】オペランド型の衝突:intはdateと互換性がない + INSERT文はFOREIGN KEY制約と衝突した
-
[解決済み】2つの列を分割する方法は?
-
[解決済み] varchar 値 'simple, ' をデータ型 int に変換する際に変換に失敗しました。
-
[解決済み】Postgresのエラー。式として使用されるサブクエリによって返される複数の行
-
[解決済み】参照するテーブルにプライマリーキーやキャンディデートキーがない
-
[解決済み] pg_restoreです。[archiver] 入力ファイルはテキスト形式のダンプであるように見えます。psql を使用してください。
-
[解決済み] ORA-12801: 並列クエリサーバー P004 および ORA-01555 でシグナルされたエラー: スナップショットが古すぎる。
-
[解決済み] 1行目4列目(年)の一括読み込みデータ変換エラー(型の不一致または指定したコードページに対して無効な文字)
-
[解決済み] SQL Serverでレコードを削除した後、IDシードをリセットする。
-
[解決済み] ALTER TABLE文に'ON DELETE CASCADE'を追加する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ERROR: 参照されたテーブル "bar" の与えられたキーに一致するユニークな制約がありません。
-
[解決済み] テーブルのFROM句の項目がない [終了しました] 。
-
[解決済み】Excelに合体的な関数はありますか?
-
[解決済み】Athena: スケールファクターでリソースを使い果たすクエリ
-
[解決済み] 2つの列を分割するには?
-
[解決済み] 検索エラー ORA-00932: 不整合なデータ型: 期待された DATE は NUMBER になりました。
-
[解決済み] 列名または提供された値の数がテーブル定義と一致しません。
-
[解決済み] ORA-00997: LONG データタイプの不正使用に対する回避策
-
[解決済み] オペランド型の衝突:uniqueidentifierはintと互換性がない
-
[解決済み] MySQLで外部キー制約を一時的に無効にするにはどうすればよいですか?