質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

2回答

300閲覧

【ORACLE】テーブルの主キー追加に伴うシステムへの影響について

T-taku

総合スコア2

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2024/09/21 04:55

ある生産管理システムでORACLEを使っています。
実績を管理しているテーブルに新たに主キー(既存項目)を設定する必要がでてきました。既にシステムで使われているテーブルに新たに主キー(既存項目)を設定することで考えられる影響は何かありますでしょうか?
主キーを新たに設定する作業は初体験なため、教えていただきたいです。
例えば、稼働中なため、システムが止まっているときにしないといけないとか、

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

srsnsts

2024/09/21 06:52

こんにちわ。 「実績を管理しているテーブル」ってことですけど、 そのテーブルに対してデータのINSERTのみが行われますか? それともUPDATEやDELETEが発生しますか? それでアドバイスが変わってくると思います。 詳細を教えてもらえると嬉しいです。
T-taku

2024/09/21 07:06 編集

回答ありがとうございます。 INSERT,DELETEが発生します。
srsnsts

2024/09/21 07:15

コメントありがとうございます。 ちょっと考えて回答を書いてみますね。
logres_Fan

2024/09/21 10:22

例えば、主キーXXXを複合主キーXXX,YYYに変更する、みないな事ですか?それとも、主キーXXXのテーブルはそのまま残して、新しく複合主キーXXX,YYYのテーブルを追加する、という事かしら?
T-taku

2024/09/21 23:31

logress_fanさん 前者のほうです。
logres_Fan

2024/09/22 03:48

 一般的には、改修予定の主キーXXXが他のテーブルから参照されている場合、参照先不明にならないように配慮します。実績テーブルなので可能性は低いとは思いますがそこの確認は必要です。  それ以前に後者の改修では駄目な理由をしっかり説明できないといけません。
guest

回答2

0

主キー作成中は排他ロックがかけられ変更ができなくなります。(読み取りは可能)
システムへの影響度は、そのテーブルがどのような使い方をされているかによりますので、場合によっては運用を中断する必要があるでしょう。
事前に同数のレコード数を持つテーブルを作り、主キー構築にどのくらいの時間がかかるかを計測しておくといいと思います。

投稿2024/09/21 09:27

編集2024/09/21 09:28
KOZ6.0

総合スコア2696

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T-taku

2024/09/21 23:28

なるほど、データ量に比例して主キー作成に時間がかかるってことですね。システムを一旦止める必要がありそうですね。 参考になりました。ありがとうございます。
guest

0

こんにちわ。

運用しているシステムのテーブルの、既存フィールドを主キーにするということで、
どんな影響があるのか考えてみたいと思います。
あるテーブルTがあり、そのフィールドがA,B,Cであるとします。
主キーはAです。以下のようなデータが入っているとします。

|A|B|C|
|1|0|0|
|2|0|0|
|3|0|0|

この状態で、主キーをA,Bに変更し、更にデータを追加します。

|A|B|C|
|1|0|0|
|2|0|0|
|3|0|0|
|1|1|0|
|2|1|0|
|3|1|0|

すると、システムの挙動にどのような変化があるか。
例えば、SELECT文の結果に変化が生じえます。

主キー変更前で、次のようなSELECT文を発行すると、
SELECT A FROM T;

結果は1,2,3となります。

しかし、主キー変更及びデータ追記後では、1,2,3,1,2,3と重複した結果が返されます。

なので、従来の主キー項目のみを抽出しているSELECT文があると、
重複が返ってくることが考えられます。

投稿2024/09/21 07:30

srsnsts

総合スコア497

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T-taku

2024/09/21 23:26

ありがとうございます。 そのテーブルを使ってるプログラムも影響がでそうですね。参考にします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問