- ベストアンサー
ユニークキーについて
複数のカラムからユニークキーにすることはできますか? MySQL バージョン4.0を使っています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- すでにあるテーブルのフィールドにユニークキーを設定できますか?
はじめまして。 私のレンタルサーバーには最初からMYSQLというデータベースが付いています。 テーブルを設定して、すでにいくつかのデータを入力しています。 最近、重複して同じIDが入力できることに気づきました。 重複できないようにしたいと思い、調べたところ、ユニークキーというものを設定すれば重複しないらしいと言うことを知りました。 そちらのレンタルサーバーにはすでにPHPMYADMINが使えるようになっています。 PHPMYADMINをつかってIDのフィールドにユニークキーを設定しようとしました。 すると下記のようなエラーがでて、ユニークキーの設定に失敗しました。 > エラー > 実行した SQL 照会: > > ALTER TABLE `テーブルの名前` ADD UNIQUE ( > > `フィールドの名前` > ); > すでにデータが入力されているテーブルのフィールドにはユニークキーは設定できないのでしょうか? もし、すでにデータが入力されているテーブルのフィールドにユニークキーを設定する方法があったら教えてください。 もしくは私が勘違いをしている部分があったら教えて頂ければ幸いです。
- ベストアンサー
- MySQL
- and条件のようなプライマリ制約
現在データベースの設計をしておりますが、insertの際、プライマリキー、ユニークキーではAというカラムが同じだとできないとなりますが、 A,Bが両方同じでエラーをかえすということはできませんでしょうか。 卒論の最終段階へきて、つまづいております。どなたかご教授いただけませんでしょうか。 使用データベースはMySqlです。
- ベストアンサー
- MySQL
- 「SELECTして取得できない場合、INSERT」の不完全さの改善
はじめまして。 ユニークキー設定しているカラムに、 SELECTして取得できない場合、INSERTの処理をすると 違うセッションでタイミングによってINSERTがエラーになってしまうと思います。(以下参照) -------------------------------------- 時間 SESSION1 SESSION2 ↓ SELECT→× ↓ SELECT→× ↓ INSERT→○ ↓ INSERT→× -------------------------------------- この様な場合、SESSION2を生かすには、その後SELECTを再度実行すればよいと思うのですが、他によい方法はないのでしょうか? 何かございましたら、ご教授お願いいたします。 各バージョン MySQL5.0 (PHP5.1)
- 締切済み
- MySQL
- ユニークキーの設定を消す
syainテーブルのユニーク属性を消すPHPのソースを教えて下さい。 例えば mysql_query('alter table syain UNIQUE KEY()'); このような文になると思います。
- 締切済み
- MySQL
- MySQLのTIMEDIFFのバグの解決方法
MySQLのTIMEDIFFのバグについて教えて下さい。 環境:MySQL 5.0.77 MySQLのテーブルにdateというtimedate型のカラムを作ります。 カラムには 2011-01-01 00:00:00 とう形でデータが登録してあります。 現在の時刻と登録してあるdateの差を出したいと思い、 TIMEDIFF(NOW(), date) を使うと 「838:59:59」という値が返ってきてしまいます」 下記のホームページに MmySQLのバージョンが4.1のバグと記載されていました。 http://onlineconsultant.jp/pukiwiki/?MySQL%204.1%20TIMEDIFF%E3%81%8C%E3%81%8A%E3%81%8B%E3%81%97%E3%81%84 バージョン5でも同じような症状が出るのでしょうか? 解決策はどのようにすればよいのでしょうか? 複数のサーバーで実験できる環境があるのですが、MySQL5.0.77でちゃんと計算される場合と、上記のような変な数字になってしまう場合があります。
- ベストアンサー
- MySQL
- 長さ1の空文字列?
タイトルの通り、長さ1の空文字列で困っています。 現在、Linux、Apache、MySQL、PHPを使って3階層アプリケーションを作っています。 予めMySQLでテーブルの形を決めておいて、CSVからデータを読み込ませておき、 PHPでSQL文を実行してレコードを取得することで、それらをユーザに表示という感じです。 複数あるカラムのうち、空文字列(CSV上でブランクだったもの)は表示させたくないので、 PHPで「 if(カラム=="")~ 」のように比較することで、空文字列だけ避けるつもりでした。 しかし上手くいかなかったので、strlen()で調べて見たところ、返り値が1でした。 本来は空文字列に対してstrlen()は0或いはfalseの返り値を返しますよね。 is_empty()でも空データ扱いにならず、当然NULLの扱いでもありません。 そのため、実データとの区別が出来ずに困っています。 何故、空文字列のカラムを除外したいかというと、 DB上のユニークなレコードを検索したいからです。 select * from where カラム='データ' and カラム='データ'… という風に。 「カラム=''」としてしまうと検索に引っかからなくなってしまいます。 どうすればよいでしょうか。 以下はそれぞれのバージョンです。 MySQL:5.0.95 PHP:5.1.6 Linux:RHEL5 Apache:2.2.3
- ベストアンサー
- PHP
- HTMLをそのままinsertしたい
MySQLバージョン4.1.16を使っています。 <html><head><head/><body>本文</body></html> のようなHTMLを1つのカラムとしてinsertしたいのですが、 この場合に何か注意する点などはあるのでしょうか? あまりこういう使い方を見たことがないので、 間違っていることなのかが分かりません。
- ベストアンサー
- MySQL
- いったいどのバージョンがいいの?
今、MySQLとPHPを使ったシステムを構築中なのですがMySQLのバージョンで悩まされています。 当初は4.0.25で構築していたのですが、あとになってサブクエリの実行ができないことがわかって急遽4.1.20をインストール。がしかし、文字セットで悩まされとりあえず「SET NAMES」にて対応しました。 そのあと、あいまい検索ができないことが判明。 カラム名 LIKE ’123%’とするとエラーが出てしまいます。 みなさんはどのバージョンを使っているのでしょうか? 参考までに教えてください。
- 締切済み
- MySQL
- Mysql DATE型のDEFAULT値
初心者ですが、よろしくお願いします。 Mysqlでテーブルを作成して、カラムにDATE型を指定するとDEFAULT値が設定できません、、、。 これはMysqlの仕様なのでしょうか? ちなみに、TIMESTAMP型だと、'DEFAULT CURRENT_TIMESTAMP'でDEFAULT設定できます、、。 -- クエリ CREATE TABLE test ( column_name DATE NOT NULL DEFAULT CURRENT_DATE ); >> エラー ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_DATE)' at line 1 Mysql::ABも調べたのですが、よく分かりませんでした。 よろしくお願いします。 MySQLバージョン 5.0.41
- 締切済み
- MySQL
お礼
ありごとうございます。 無事にできました。