テーブル作成時のエラーについて

このQ&Aのポイント
  • テーブルを作成する際に発生したエラーについて質問です。エラーメッセージの内容として、テーブル名とフィールド名をくっつけたような名前のシーケンスが暗黙的に作成されるということが示されています。また、主キーに関しても暗黙的なインデックスが作成されると述べられています。
  • 他のテーブルと同じ名前の主キーが存在するためにエラーが発生している可能性があります。質問者は名前を変更して実行しても同様のエラーが生じていることを報告しています。
  • テーブル名とフィールド名をくっつけたような名前は元々存在しなかったが、実行後にデータベースに作成されたという点に疑問を抱いています。
回答を見る
  • ベストアンサー

テーブルを作ろうとしたら。

下記のようなエラー文が表示されます。 NOTICE: CREATE TABLE will create implicit sequence 'テーブル名とフィールド名をくっつけたような名前' fo r SERIAL column 'テーブル名.フィールド名' NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index 'テーブル名_pke y' for table 'テーブル名' このデーターベースには他にもテーブルがありますが、 名前が主キーで名前が同じものがあるからエラーがでると思い、名前を変更して実行しましたが、同じような エラーがでました。 テーブル名とフィールド名をくっつけたような名前はもともとなかったものなのですが、実行後にデータベースに作成されました。 どなたかわかる方がいたら、ご教授お願いいたします。

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

  • ベストアンサー
  • umota
  • ベストアンサー率46% (150/324)
回答No.1

エラー は ERROR であり、 NOTICE は注目 です。 「インデックス用のテーブルを作成しました」 と言っているのでは?

aiurai54
質問者

お礼

勘違いしていました。 ありがとうございました!!

関連するQ&A

  • 複数テーブルで ID の一意性を保つ

    Debian GNU/Linux 3.1 で psql 8.1.2 を使用しています。 下記の要領でテーブルを作成し、2つのテーブルでIDが重ならないようにしようと意図しました。 CREATE TABLE t1 ( t1_id int2 UNIQUE NOT NULL, t1_name text NOT NULL ); NOTICE: CREATE TABLE / UNIQUE will create implicit index "t1_t1_id_key" for table "t1" CREATE TABLE CREATE TABLE t2 ( t2_id int2 UNIQUE NOT NULL, t2_name text NOT NULL ); NOTICE: CREATE TABLE / UNIQUE will create implicit index "t2_t2_id_key" for table "t2" CREATE TABLE CREATE FUNCTION unique_t12_id(int2) RETURNS BOOLEAN AS 'SELECT NOT ( EXISTS(SELECT * FROM t1 WHERE t1_id = $1) AND EXISTS(SELECT * FROM t2 WHERE t2_id = $1) );' LANGUAGE SQL; CREATE FUNCTION ALTER TABLE t1 ADD CONSTRAINT con_unique_t12 CHECK (unique_t12_id(t1_id)); ALTER TABLE ALTER TABLE t2 ADD CONSTRAINT con_unique_t12 CHECK (unique_t12_id(t2_id)); ALTER TABLE ところが実際は上手くいきませんでした。 INSERT INTO t1 VALUES(1, 'test1'); INSERT 0 1 INSERT INTO t2 VALUES(2, 'test2'); INSERT 0 1 INSERT INTO t2 VALUES(2, 'test3'); ERROR: duplicate key violates unique constraint "t2_t2_id_key" # ここまでは期待通りの挙動です INSERT INTO t2 VALUES(1, 'test4'); INSERT 0 1 ここで制約が働いて欲しかったのですが、素通りでINSERTされています。 下記のように、操作後の関数の戻り値は「偽」なのでこの操作は制約に引っかかると思うのですが 何故意図したように動かないのでしょうか。 SELECT *,unique_t12_id(t2_id) FROM t2; t2_id | t2_name | unique_t12_id -------+---------+--------------- 2 | test2 | t 1 | test4 | f (2 rows) スペースが詰まって読みづらい箇所もありますが、よろしくお願いします。

  • テーブルを再編集するには

    PostgreSQL7.1.3 RedHatLinux7.2 create table でtestというテーブルを作りまして、ID、nameというフィールドを作り、主キーをIDに設定しました。このテーブルにtelというフィールドを追加したいのですが、テーブルを編集するコマンドがわかりません。 また、testテーブルにいつくかデータを入力したのですが、そのデータがちゃんと入っているかどうか確認するコマンドも知りたいです。 宜しくお願いします!

  • PostgresSQLでテーブル定義の抽出方法

    create tableでテーブルを作成し、 comment on table でテーブルに名前を comment on column でアイテムに名前を つけてみました。 これらの作業の成果物を抽出したいのですが、どうやれば良いのでしょうか? \d テーブル名で Column、Type、Modifiersは確認できますが、 そうでなくて、別のデータベースにテーブルの枠だけをそのまま移植できるような形式で抽出できないでしょうか? create table tb1 ( item1 char(1) null ); comment on table is 'テーブル1'; comment on column is 'テーブル1のアイテム1'; みたいな状態で抜く事は可能でしょうか?

  • T-SQLで一時テーブルの名前を毎回変更できるストアドを作りたい

    お世話になります。 初歩的な質問で恐縮ですがご教示いただければ幸いです。 T-SQLでグローバル一時テーブルの名前を毎回変更できるストアドを作り、Access2003アプリから実行させる予定です。 ストアドに、CREATE TABLE [dbo].[@tablename]のように書き、 ストアド実行時に@tablenameの値を ##ABC のように入力したのですが、テーブルはtempdbではなく、しかもテーブル名は@tablenameでテーブルが作成されてしまいます。 CREATE TABLE [dbo].@tablename のように[]をとると ストアド自体を作成できずエラーになってしまいます。 宜しくお願いします。 create PROCEDURE [dbo].[ストアドプロシージャー名] (@tablename nvarchar(255)) AS BEGIN from SET NOCOUNT ON; CREATE TABLE [dbo].[@tablename] <以下省略>

  • すでにあるテーブルのフィールドにユニークキーを設定できますか?

    はじめまして。 私のレンタルサーバーには最初からMYSQLというデータベースが付いています。 テーブルを設定して、すでにいくつかのデータを入力しています。 最近、重複して同じIDが入力できることに気づきました。 重複できないようにしたいと思い、調べたところ、ユニークキーというものを設定すれば重複しないらしいと言うことを知りました。 そちらのレンタルサーバーにはすでにPHPMYADMINが使えるようになっています。 PHPMYADMINをつかってIDのフィールドにユニークキーを設定しようとしました。 すると下記のようなエラーがでて、ユニークキーの設定に失敗しました。 > エラー > 実行した SQL 照会: > > ALTER TABLE `テーブルの名前` ADD UNIQUE ( > > `フィールドの名前` > ); > すでにデータが入力されているテーブルのフィールドにはユニークキーは設定できないのでしょうか? もし、すでにデータが入力されているテーブルのフィールドにユニークキーを設定する方法があったら教えてください。 もしくは私が勘違いをしている部分があったら教えて頂ければ幸いです。

    • ベストアンサー
    • MySQL
  • レコード削除でのテーブル修正

    初めて、データベースを作成するのですが、 基本的な部分でつまずいています。 テーブルのレコード削除において、 そのテーブルの主キーを外部キーに使用している他のテーブルの修正に関して 教えて頂きたいのですが? 例えば、テーブルが2つ(Table-A、Table-B)あり、 フィールドとして、 Table-A (1)販売員コード(主キー) (2)名前      (3)年齢 Table-B (1)顧客コード(主キー)  (2)販売員コード(外部キー) (3)注文日  (4)商品コード(外部キー) があったとします。 この時、Table-Aの販売員コード 0015番が辞めたので、削除する場合、 1.通常、0015番は、永久欠番にするのでしょうか、それとも新しい販売員に  割り当てることもあるのでしょうか? 2.もし、後者である場合、Table-Bの(2)販売員コードフィールドの0015番のすべてのデータは、  元の販売員と名前が違う訳ですから、どう対応したらよいのでしょう?   永久欠番であれば、まだ分かるのですが、一般に各テーブルの主キーは一度決めたら、 変更しないものなのか、変更もありえるのか教えて欲しいのです。 初心者なので、質問内容が質問になっていないかもしれませんが、宜しくお願いします。

  • mysql のテーブルの名前は数字ではだめですか

    phpmyadmin で数字名前のテーブル上手く作りましたが。。なぜかmysqlで $query = "CREATE TABLE 2234( id int AUTO_INCREMENT key, 入力日 VARCHAR(10 ) $squery1 = mysql_query($query); (create table "2234"( ...)もcreat table '2234'(..)もだめ) なぜかエラーが出ました?

  • ACCESS2007 tinyint型

    tainyint型のテーブルを作成することは可能でしょうか? create table テーブル1 (年 smallint , 月 tinyint); 上記を実行すると、「フィールド定義の構文エラーです。」と なります。 tinyint型のテーブルを作成する、create文を教えてください。 よろしくお願いします。

  • テーブル作成時にエラー?

    こんにちは。 以下のような環境で操作を行っています。 RedHatLinux9.0 PostgreSQL 8.0.3 テーブル作成時に次のようなメッセージが出力され、テーブルを作成することができません。 NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "PK_SIKYO" for table "TM_SIKYO" ちなみに実行したSQL文は次の通りです。 CREATE TABLE "TOUSHIN"."TM_SIKYO" ( "SHIKYO_CD" int4 NOT NULL DEFAULT nextval('"TOUSHIN"."TM_SIKYO_SHIKYO_CD_seq"'::text), "SHIKYO_NM" varchar(50), "SHIKYO_RNM" varchar(50), "SHOW_FLAG" bool, "UNUSE_FLAG" bool, "CREATE_DATE" timestamp DEFAULT ('now'::text)::timestamp(6) with time zone, "CREATE_ID" varchar(10), "CHANGE_DATE" timestamp DEFAULT ('now'::text)::timestamp(6) with time zone, "CHANGE_ID" varchar(10), CONSTRAINT "PK_SIKYO" PRIMARY KEY ("SHIKYO_CD") ) WITHOUT OIDS; SQL文はWindows版のPostgreSQLから作成したものを、そのままコピーして利用しました。 プライマリーキーが正しく設定できていないようなメッセージだと思うのですが、対処法など詳しいことが分からずに困っています。 Windows版から出力したSQL文なので、SQL文に間違いがありそうな感じでもないですし、一体何が原因なのでしょうか?

  • 初歩的ですが、どうしてかテーブルが作成できないで困っています。

    こんにちは。 MySQLを使い始めたのですが、 テーブルを作成するという初歩的な部分で、 どうしても自分では分からなくなってしまい 質問させていただきます。 create databaseを行った後、 普通にテーブルを作成しようとしただけではあります。 作成しようとしたテーブルは、 keyというカラムとvalueというカラムの 計2つからなるテーブルです。 しかし、 カラム名の1つを「key」ではなく「time_to_get_the_key」で行うと、 正常にテーブルが作成されるのに、 mysql> CREATE TABLE 20090413_put1(time_to_get_the_key VARCHAR(100), value VARCHAR(100)); Query OK, 0 rows affected (0.01 sec) 同じカラム名を「key」でテーブル作成しようとすると、作成ができないでいます。 mysql> CREATE TABLE 20090413_put1(key VARCHAR(100), value VARCHAR(100)); 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 'VARCHAR(100), value VARCHAR(100))' at line 1 本来は、 「key」と「value」というカラムで、 それぞれ100文字以内で収まる文字列を カラムに挿入させるつもりでした。 何か御意見いただけるとありがたいです。 宜しくお願い致します。

    • ベストアンサー
    • MySQL