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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

3回答

642閲覧

MySQLで、DELETE文を発行する以外に、テーブルのレコードを消す方法は存在するか確認したい

Generalist

総合スコア11

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

1クリップ

投稿2020/07/16 14:05

初歩的な質問で恐縮です。

データベースとして、「MySQL」を利用しています。

ある、特定のテーブルに、複数レコードが存在したとして、
その中の、「対象レコード」を削除するには、
必ず「DELETE文を発行しないとならない」で合っていますでしょうか?

DROPとかTRUNCATEは無視して下さい。
ツールやクライアント、
プログラム固有の機能も無視して下さい。

純粋に、MySQL単体で考えた場合に、
何か消す機能があるのか知りたいです。

事情として、全くDELETE文を発行していないにも関わらず、
データが消えるという事件があり。

ログを取得して調査はするので、何を持って消えたか、は
わかるのですが、
もし、自分の知識不足で、他にデータを消す方法があったら、
その可能性も考慮しなければならないため、
質問させて頂きました。

何卒ご助言の程、宜しくお願い致します。

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

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

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

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

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

guest

回答3

0

ベストアンサー

削除はDELETEのみですが、キーをUPDATEしてもDELETEされたように見えますね。

投稿2020/07/16 15:51

sazi

総合スコア25206

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

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

Generalist

2020/07/16 16:30

ありがとうございます! なるほど、キーのみ条件でUPDATEで、空行とするという事ですね! もしくは、レコードそのものが消える挙動だったでしょうか・・・?
sousuke

2020/07/17 00:21

少し違うと思います。 「事情として、全くDELETE文を発行していないにも関わらず、 データが消えるという事件があり。 」 「データが消える」という現象の確認の仕方が回答者にわからないため想像で答えています。 「データが消えている」というのが仮に「データがwhere条件にかからなくなった」ということの 場合もあるため、whereで指定されている項目をupdateするだけで「データが消えたように見える」 ということを言っています。
sazi

2020/07/17 00:49

@sousukeさん フォローありがとうございます。
Generalist

2020/07/17 06:16

失礼致しました! 「データが消える」という現象は 「データ、レコードが物理削除される」 という事です。 キー項目をUPDATEで変更されて、WHERE条件にかからなくなった、という現象ではありません。 わかりにくい質問の仕方をしてしまい、すみませんでした!
sazi

2020/07/17 06:22 編集

特定のデータではなく、全件物理削除されているのですか? 特定のデータなら、その特定する情報を書き換えられる場合も調査の対象ですよね。
Generalist

2020/07/20 16:01

コメント欄などでも、お助け頂き、ありがとうございました。 特定のデータが極稀に物理削除されている、という状態で、 最終的に、私が作成したプログラムでは、データの削除は行っていない、という結果となりました。 併せて、こちらでも色々な可能性を提示して頂いたので、 それらについて全て調査して、無事、他社のプログラムが原因とわかり、 対応する事が出来ました。一番親身になってくださったので、ベストアンサーとさせてください。 私も、saziさんのように、他の方を助けられるようになりたいと思いました!
guest

0

思いつくのは参照整合性の連鎖削除や連鎖更新

投稿2020/07/16 15:10

sousuke

総合スコア3828

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

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

Generalist

2020/07/16 16:19

外部キーは使用しておらず、外部キー制約はありません。 でも、可能性を潰せました、ありがとうございます!
guest

0

DROPとかTRUNCATEは無視して下さい。

DROPはテーブル自体を削除してしまいますしCREATEとペアで使わなければなりません。
TRUNCATEはAUTO INCREMENTも含めてテーブルのデータをリセットする機能です。

いずれも「その中の、「対象レコード」を削除する」という要件は満たせないので、無視する以前に手法の候補としても挙げられません。

「削除する」というのも「物理削除」か「論理削除」かでやり方も違います。

論理削除を採用して「普通に検索するときに削除フラグを必ず条件にいれる」のをセットとすれば「対象レコードを読み込まない」と言う形での「削除」は達成できます。

事情として、全くDELETE文を発行していないにも関わらず、

データが消えるという事件があり。

環境次第ではないでしょうか。
何かでDB接続情報が漏れていてイタズラされたという可能性もあるのでは。

※質問に提示された情報では他者が推測するためにすら、不足ですし、後出しが多いと回答が無駄になります

投稿2020/07/16 21:19

m.ts10806

総合スコア80861

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

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

Orlofsky

2020/07/16 23:28

セキュリティの脆弱性については敏感にならないといけません。 マイナンバーカードって、Microsoftがセキュリティの脆弱性を解消できないので捨てたActiveXを使っているから、Windows PCはIE11 でしか使えないらしい。 https://www.j-cast.com/2020/07/05389466.html
sazi

2020/07/17 06:20

@Orlofskyさん コメントの意図が分からないのですが。
Generalist

2020/07/17 06:21

ご回答ありがとうございます!また、セキュリティについてコメントもありがとうございます! 「物理削除」と「論理削除」については理解しており、今回は 「データ、レコードが物理削除される」という内容です。 もっと簡潔に書くか、詳細に書くかどちらかにすれば良かったです。中途半端な質問の仕方で 申し訳ございません。 セキュリティの問題については考えなければならないと思っており、ログで精査致しますが、 サーバー、DB共にIPアドレスで接続制限がなされている状態です。 もちろん、許可されているIPアドレスからの不正操作のケースもあると思いますので、 それにも留意して調査致します!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問