- ベストアンサー
テーブル作成について質問があります。
今perlでDBにデータを保存し表示する掲示板を作っています。 書き込みされるデータ(名前・タイトル・本文・URL)をまとめて管理したいです。 管理したい理由はそれぞれの書き込みに対してIDみたいなものを自動的に振り分けて、そのIDで書き込み(そのIDの行のデータ全て)を削除出来るようにしたいのです。 ID:1 名前:佐藤 タイトル:始めまして。 本文:よろしくお願いします。 URL:xxxxxxxxxxxx 等の書き込みがあった場合に、削除したいID(この場合は1)を削除の項目に入力して削除出来るようにしたいのです。 ですが、書き込む際に利用者にはIDを書かせません。書き込みされた時に自動的かつ1/2/3/4/…と順番に振り分けたいのですが、これはDBを作る上でどうにか設定できるのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
INSERT文のフィールド名は設定していますでしょうか。 id以外の項目を列挙すれば問題なく挿入できると思うのですが。 INSERT INTO `tableName` (`name`, `title`, ・・・以下略) values ('佐藤', '始めまして。', ・・・以下略); 取得する場合はid指定で取れると思います。 SELECT * FROM `tableName` WHERE `id` = 1;
その他の回答 (3)
- chukenkenkou
- ベストアンサー率43% (833/1926)
>AUTO_INCREMENTにはかならずデータを渡さなければいけない >(NULLは許可されない)となったんですが nullを挿入する指定をすると、MySQL側でnullを格納するのではなく、+1してくれます。 insert into 表名 values(null,'佐藤','はじめまして','よろしく~','xxx..x') でもいいし、 insert into 表名(名前,タイトル,本文,URL) values(null,'佐藤','はじめまして','よろしく~','xxx..x') でもいいです。
- GoGoAhead
- ベストアンサー率40% (2/5)
使っているDB、用途、重要性にもよりますが、 先の回答にもありましたがAUTO_INCREMENTが楽でいいのでは? ただし、DBがOracleであったり、データの重要性が高く 冗長化を考慮するとAUTO_INCREMENTは私個人としては使いにくい・・・ って感じですね。
補足
重要性はそんなに多角ありません。 使っているのはMYSQLです。 IDのフィールドをAUTO_INCREMENTとして設定した場合、perlでデータを受け渡す際にIDのフィールドには何も渡さなくても良いのでしょうか? 以前に同じような事を試みた時に、AUTO_INCREMENTにはかならずデータを渡さなければいけない(NULLは許可されない)となったんですが…。
- Tasuke22
- ベストアンサー率33% (1799/5383)
IDフィールドをintなどの数値フィールドタイプにして、 auto_increment属性を与えれば、自動的に数値が与えられ ますけど。
補足
その数値のフィールドは書き込まれたデータを受け渡す際に空白でも大丈夫なのですか? それともデータを受け渡す時にIDのフィールド自体を指定しないと言う事でしょうか??
お礼
ありがとうございます1これで試してみます!!