ホームページ > データベース > Oracle > Oracleの主キーの削除

Oracleの主キーの削除

王林
リリース: 2023-05-08 10:57:07
オリジナル
2755 人が閲覧しました

Oracle データベースでは、主キーは各テーブルに一意のレコードのみが存在するようにするための重要な制約です。主キーを削除する必要がある場合は、データの整合性と一貫性を確保するために、いくつかの注意と手順が必要です。

Oracle データベースの主キーを削除するための手順をいくつか示します。

  1. 依存関係を確認する

主キーを削除する前に、次のことを行う必要があります。主キーが他のオブジェクトに依存しているかどうかを確認します。次のスクリプト クエリを使用できます。

SELECT constraint_name, table_name
FROM user_constraints
WHERE constraint_type = 'R'
  AND r_constraint_name = '<primary_key_name>'; 
ログイン後にコピー
ログイン後にコピー

クエリ結果に 1 つ以上のレコードが含まれている場合、主キーが外部キーに依存している可能性があることを示しており、主キーに関連付けられた外部キーはまず削除されます。

  1. 外部キーの削除

主キーに依存する外部キー制約が見つかった場合、主キーを削除するにはこれらの外部キーを削除する必要があります。関連するすべての外部キー制約は、次のスクリプトを使用してクエリできます。

SELECT constraint_name, table_name
FROM user_constraints
WHERE constraint_type = 'R'
  AND r_constraint_name = '<primary_key_name>'; 
ログイン後にコピー
ログイン後にコピー

各外部キー制約は、次のステートメントを使用して削除できます。

ALTER TABLE <table_name> DROP CONSTRAINT <foreign_key_name>; 
ログイン後にコピー
  1. 主キーをキャンセル

主キーに依存する外部キーがないことを確認したら、次のスクリプトを実行して主キーをキャンセルできます。

ALTER TABLE <table_name> DROP CONSTRAINT <primary_key_name>; 
ログイン後にコピー

主キーを削除すると、外部キーの参照制約として使用できなくなりました。この列を外部キーとして使用する必要がある場合は、主キーを再作成する必要があります。

  1. 主キーを再作成します

主キーを再作成する必要がある場合は、次のステートメントを使用できます:

ALTER TABLE <table_name> ADD CONSTRAINT <primary_key_name> PRIMARY KEY (<column_name>); 
ログイン後にコピー

Please主キーの一意性を確保するため、この列に重複した値を挿入できないことに注意してください。主キーを再作成する前にデータを修正する必要がある場合は、次のステートメントを使用できます:

DELETE FROM <table_name>
WHERE rowid NOT IN (SELECT MIN(rowid)
                    FROM <table_name>
                    GROUP BY <column_name>);
ログイン後にコピー

これにより、テーブル内の重複レコードが削除され、一意制約をトリガーせずに新しい主キーを追加できるようになります。 。

つまり、Oracle データベースの主キーを削除する際には、いくつかの注意点と手順がある可能性があるため、警戒と注意が必要です。この記事では、このプロセスを実行する手順に関するガイダンスを提供し、操作を完全かつ正確に実行してデータの整合性と一貫性を確保するのに役立ついくつかの便利なスクリプトとステートメントを提供します。

以上がOracleの主キーの削除の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート