電子書籍の厳選無料作品が豊富!

プログラム初心者です

テーブルに途中からプライマリーキーを作成することはできますか?

idとゆうカラムを追加で作成して主キーにしようとしたのですがエラーがでます

idはint型でテーブルには100行あるのですが全部0になっているのが原因かもしれません

このidカラムに1~100まで数字を与える方法はありますか?

よろしくお願いします

A 回答 (3件)

ざっと調べてみました



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

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

お礼日時:2014/01/29 21:14

>やってみたのですが全部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からの連番になっているはず
    • good
    • 0
この回答へのお礼

そのコードでそのままテーブルを作ってidが全てnullを確認してからupdateしてみると
こちらの結果ではidが全部1になってしまいました

上のほうに注意書きがでてしまいました
多分idが全部同じでphpmyadminからidを特定できないのでupdateができませんとゆう意味だと思います

「このテーブルには、一意の列が含まれていません。グリッド編集、チェックボックス、編集、コピー、および削除機能は使用できません。」

お礼日時:2014/01/28 23:44

プライマリキーはユニークな値でかつnot nullでなくてはいけません



tblのidに1から順番の数値を振る方法はこんな感じ
(強制で書き変わるので運用には注意)

update tbl set id=@a:=coalesce(@a+1,1);
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/01/27 23:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!