• ベストアンサー

途中からプライマリーキーを作成

プログラム初心者です テーブルに途中からプライマリーキーを作成することはできますか? idとゆうカラムを追加で作成して主キーにしようとしたのですがエラーがでます idはint型でテーブルには100行あるのですが全部0になっているのが原因かもしれません このidカラムに1~100まで数字を与える方法はありますか? よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

ざっと調べてみました どうやらphpMyAdminのバージョンによる仕様のようですね 一度idカラムを削除し、phpMyAdminの構造タブから 1個のカラムを追加する(追加位置は先頭?適当に)として実行し 名前をid、データ型をintとし、nullにチェックをせず、 A_I(オートインクリメント)にチェックをいれた上で保存してください (たぶんその時点で主キー属性がついていると思います)

flash0
質問者

お礼

削除して追加するだけでオートインクリメントがついてました お手数かけました。途中からも自動的につけられるとは知らなかったです。。。 ありがとうございました

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>やってみたのですが全部1になってしまいました はて?再現しないです ちなみにこんな感じでやっても同じ? create table tbl (id int,data varchar(20)); insert into tbl(data) values('v1'),('v2'),('v3'),('v4'),('v5'); select * from tbl; →idがnullになっているはず update tbl set id=@a:=coalesce(@a+1,1); select * from tbl; →idが1からの連番になっているはず

flash0
質問者

お礼

そのコードでそのままテーブルを作ってidが全てnullを確認してからupdateしてみると こちらの結果ではidが全部1になってしまいました 上のほうに注意書きがでてしまいました 多分idが全部同じでphpmyadminからidを特定できないのでupdateができませんとゆう意味だと思います ↓ 「このテーブルには、一意の列が含まれていません。グリッド編集、チェックボックス、編集、コピー、および削除機能は使用できません。」

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

プライマリキーはユニークな値でかつnot nullでなくてはいけません tblのidに1から順番の数値を振る方法はこんな感じ (強制で書き変わるので運用には注意) update tbl set id=@a:=coalesce(@a+1,1);

flash0
質問者

お礼

回答ありがとうございます やってみたのですが全部1になってしまいました。うーん

関連するQ&A