11/05/16 14:35:58.77
初心者なんですが、例えば
idが3の列のデータを全部削除した場合、id 4をid 3につめるという方法はあるのでしょうか?
718:NAME IS NULL
11/05/16 14:38:43.33
>>717
本名の他に、芸名を付ければいいんじゃないの?
719:NAME IS NULL
11/05/16 14:41:59.55
deleteしたあとupdateでもしてろよ
720:NAME IS NULL
11/05/16 15:11:15.60
>>719
まじでそれでいけるの?
721:NAME IS NULL
11/05/16 16:26:38.63
>>720
ALTER TABLE table AUTO_INCREMENT=3;
722:NAME IS NULL
11/05/16 16:38:43.92
>>721は釣りで良いんだよな…
723:NAME IS NULL
11/05/16 18:03:32.11
はぁ?
724:NAME IS NULL
11/05/16 18:16:11.95
>>720
馬鹿ならしね
725:NAME IS NULL
11/05/16 21:14:29.69
4以上をすべて -1 すればいいだけじゃね。
ちょっと考えれば思いつくと思んだが。
プログラムってアイデア勝負だな。
726:NAME IS NULL
11/05/16 21:31:05.31
MySQLはそこでorder byとかやらないとキー重複でエラーになるんだっけ?
727:NAME IS NULL
11/05/16 22:10:11.06
>>726
ならぬ
728:NAME IS NULL
11/05/17 05:11:06.54
プライマリキーをオートインクリメントで設定すると
どんどん増えていくじゃないですか。
だからidをつめた方がいいのかなと思ったんであります。
でも調べたら1日100万レコードの追加してもエラーがでるまで
12年くらいかかるっぽいんですね。だから気にすることはない。
この認識であってますか?
729:NAME IS NULL
11/05/17 05:27:18.02
>>725 馬鹿?
AUTO_INCREMENT付ければ勝手に連番付与してくれる
730:NAME IS NULL
11/05/17 05:31:44.38
>>728
RDBなんだから普通はIDが他のtableから参照されたりするだろ。
だから特定のtableのIDを詰めるようなことは行わない。
そもそもレコードを削除してしまうと情報が消えてしまうので
削除フラグを立ててレコードは残しておくことが多い。
731:NAME IS NULL
11/05/17 05:53:12.88
>>728
レコード削除でオートインクリメントカラムの数字を詰めたい・再利用したい ってのは
独学初心者の典型的な発想。
詰める必要はないし、データ管理という観点でも「詰めちゃいかん」のだよ
732:NAME IS NULL
11/05/17 06:00:15.54
>>730-731
なるほど
まあDBは初心者なわけですがw
ではチャットみたいなやりとりもDBでは消さないで保存するシステムになってるのですかね?
733:NAME IS NULL
11/05/17 06:07:18.29
チャットをDBに保存する意味があるかどうかは別として、基本的には削除する必要はないだろ
何かあったときのための証拠として残しておけ!
734:728
11/05/17 06:15:47.52
>>733
>チャットをDBに保存する意味があるかどうかは
まさにこの部分なんですよ
何かしら一時的には保存してるわけでそれがDBに保存する場合、古いのは消していかないと
容量がどんどん増えていくんじゃないのかということで上記の質問をしたわけです。
735:NAME IS NULL
11/05/17 08:46:52.32
>>729
おまえが元コメ読んでない馬鹿だろ
736:NAME IS NULL
11/05/17 10:05:27.53
>>734
そういうのを必要に応じて消すというのはよくあるが
IDを振り直すというのはありえない
というのが結論
737:NAME IS NULL
11/05/17 16:05:34.67
>>728
どうしても空き番を再利用したいなら
オライリーのMySQL Cookbookのvol2に載ってるから
買って読むといいよ。