• ベストアンサー

テーブル名について

へんな質問ですが、 テーブル名をuserにするとinsertでエラーがでます。 テーブル名をuser_bkupとかにすると、エラーが出なくなります。 こんなことってあるのでしょうか?

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

  • ベストアンサー
noname#118337
noname#118337
回答No.1

おそらく、userというのはそのアプリ(ACCESSですか?)で既に利用されている名称なのでしょう。 既に利用というのは、ユーザーが設定したのではなく、アプリ内で利用されているメソッドということです。 ACCESSだとしたら、VBAでuserという定義があったかと思います(ちょっと忘れたので確信ではないですが) どのアプリでも、利用されている可能性のあるような名前にするのは危険です。 フリー等だと特に、そこまで考えられておらず、変な動作することもあります。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

プログラミング言語やSQLには、予約語が存在する場合があります。 予約語とは、意味を持った語句であり、コンパイラやDBMSは、その語句を頼りに構文解析を行います。 例えば、select文を考えると、 select→列名や式→from→表名→where 条件→group y 列名→order by 列名 というのが基本的な構文です。 これを構文解析する場合は、「select」、「from」、「where」などが重要なキーワードになります。 ところが、これらのキーワードを、表名や列名などに使用されていると、それらを区別して識別するための工夫が必要になります。しかし、構文の自由度を許しすぎると、今度はその解析にオーバヘッド掛かりすぎてしまうことになってしまいます。 RDBMSの場合は、英単語を表名や列名にそのまま使用すると、予約語に引っ掛かり、想定外の構文エラーになってしまう場合があります。 この回避策として、多くのRDBMSでは、「"」などの引用符で表名や列名を囲めば、予約語と同じキーワードでも使用可能としています。 MySQLの場合は、ANSIの文字コードなら"user"(「"」で囲む)、それ以外の文字コードなら、`user`(「`」で囲む)ことで、予約語を表名や列名で使用することを可能としています。

xyz_1990
質問者

お礼

まとめて、お礼を申し上げます。 ありがとうございました。 userをmemberに変更することで、対応しました。

全文を見る
すると、全ての回答が全文表示されます。
noname#118337
noname#118337
回答No.2

No.1です。 MySQLだったんですね。今気がつきました(*_*) でも、同じことです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • テーブルの項目名を変数にするには?

    <開発環境> WindowsXP Professional SQL Server 2005 いつもお世話になっております。 次のようなことをやりたいのですが、上手くできず困っています。 どなたかご教示くださると助かります。 ○やりたいこと  テーブルの項目数が1~200個あり、項目名が「ユーザ数001」「アクセス回数001」~ 「ユーザ数100」「アクセス回数100」の順に並んでいる。 そこで、変数を使って「ユーザ数001」~「ユーザ数100」と 「アクセス回数001」~「アクセス回数100」にSELECTして得られた 結果をINSERTしたい。 テーブルの列名(項目名)は以下のようにして取得することはできました。 SELECT dbo.syscolumns.name FROM dbo.syscolumns INNER JOIN dbo.sysobjects ON (dbo.sysobjects.id = dbo.syscolumns.id) WHERE dbo.sysobjects.name = 'テーブル名' AND (dbo.syscolumns.name LIKE '%ユーザ数%' + @cnt OR dbo.syscolumns.name LIKE '%アクセス回数%' + @cnt) @cntは変数で1~100までカウントアップして列名を取得しています。 ○困っていること ・上記のSELECTで得られた結果を別の変数「@User」「@Access」にセットしたいが上手くできない。 ・さらに「@User」「@Access」を使って、INSERTを行いたい。 (具体的には以下のようにしたい) INSERT INTO dbo.[テーブル名](@User,@Access) SELECT TOP 100 UCNT, ACNT FROM ( SELECT・・・ (このINSERT文は前後にWHILE文で1~100まで処理を回して、変数「@cnt」がカウントアップするようにしています) 以上、下手な説明でわかりにくいかもしれませんが、宜しくお願い致します。

  • SQLでスキーマ名(所有者名)の修飾無しでテーブル参照したい

    select * from [テーブル名] で問い合わせをしたいんですが、 select * from [スキーマ名].[テーブル名] でなければエラーになってしまいます。 (「オブジェクト名 'テーブル名' は無効です。」といった、テーブルが無い旨のエラーが出ます。) 所有者(スキーマ名?)をdboに変更してするとテーブル名だけで参照できます。 例えば、テーブルの所有者を'test_user'に変更した場合、 test_userでログインしているにもかかわらず(クエリアナライザ)、修飾が無いと参照できません。 'test_user'はsystem administratorsロールに入れてあります。 SQLServerをインストールし直して DBを一から構築してもそうなります。 何か施さないといけないことがあるのでしょうか。 思い当たることがございましたら、ご教示頂ければと思います。 環境は SQL Server 2000 です。

  • テーブルからテーブルの移行について

    あるテーブルから違うテーブルにデータを挿入しようとしています。 データ取得はPHPで作成していますが、 DBはPostgresです。 INSERT INTO VALUEで値を入れたいのですが、 テーブルの形式が違うため、フィールド数も違います。 VALUE(,,値,,) とするとエラーになってしまいます。 フィールド名で入れるしか方法はないのでしょうか? 何かよい案がありましたら、ご教授ください。 よろしくお願いいたします。

  • OWNER名を指定せずにテーブルを検索方法

    こんにちは、Oracle初心者です。 ユーザーAで作成したテーブルを、ユーザーBで照会する方法を 教えてください。 新規に作成したユーザーBにDBA権限を与え、Oracleログイン後、 SELECT * FROM A.TABLE_NAME とすると問題ないのですが、 SELECT * FROM TABLE_NAME と、OWNER名を省略するとエラーが発生します。 (テーブルが存在しないというエラー) OWNER名を指定せずにテーブルを検索するにはどうすれば良いでしょうか?幼稚な質問で申し訳ございませんが、宜しくお願いします。 現在Oracle9iを使用しております。

  • テーブル名などにカッコを使わない方が良い?

    テーブル名などにカッコを使わない方が良いと聞いたのですが 何故でしょうか? 例えば T会社名(関連) と言うテーブル名です。 vbaでエラーになるのでしょうか? よろしくお願いします。

  • テーブル名を[]でくくらないとエラーになってしまう

    テーブル名を[]でくくらないとエラーになってしまいます sqlserver 2008 express edition を利用しているのですが テーブル名 やカラム名に[]でくくってSQL文を実行しないと エラーが出てしまいます 例えば select * from [table]  の様にしないといけません これを select * from table で実行できるようにしたいのです どうしたらいいのでしょうか 会社ではsqlserver2005を利用しているので 2008からは[]でくくる必要になったのでしょうか それとも初期設定で何かしないといけないのでしょうか 設定方法を教えて下さい sqlserver management studio2008もインストール済みです

  • PHPでPostgreSQLのテーブルを表示できない

    phpPgAdminでテーブルを作成し、 WEBからアクセスしようとして以下のPHPファイル(1)を作成しました。 すると以下のエラーメッセージ(1)が出て テーブルが表示されませんでした。 そこでPHPファイルを(2)のように変更したら エラーメッセージ(2)が出てテーブルが表示されませんでした。 ********************************************************** エラーメッセージ(1) permission denied for relation テーブル名 ********************************************************** PHPのファイル(1) ********************************************************** <?php $sv = "ホスト名"; $dbname = "DB名"; $user = "ユーザ名"; $pass = "パスワード"; $conn = pg_connect("host=$sv dbname=$dbname user=$user password=$pass") or die("接続エラー"); $sql = "select * from テーブル2;"; ********************************************************** エラーメッセージ(2) parse error, unexpected T_STRING ********************************************************** 変更後のPHPのファイル(2) ********************************************************** <?php $sv = "ホスト名"; $dbname = "DB名"; $user = "ユーザ名"; $pass = "パスワード"; ↓↓↓↓ここを加えた↓↓↓↓↓ GRANT ALL ON tbl_pv4 TO ユーザ名; GRANT ALL ON tbl_pv4 TO nobody; $conn = pg_connect("host=$sv dbname=$dbname user=$user password=$pass") or die("接続エラー"); $sql = "select * from テーブル2;"; ********************************************************** ちなみにテーブル2の代わりに前任者が作成したテーブルに変更すると問題なく表示されます。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • OracleDatabaseのテーブル名

    無償版のOracle Database 10g XEを使用しているのですが、 CSVファイルをロードして、テーブルを作成する過程で、テーブル名を付けるところで、 日本語を混ぜて、Shift-JISで「TBL_AAA_第01表_統計データ」と入力し、次へ進むと、 エラーとなりテーブルを作成できません。「TBL_AAA_第01表」とすると作成可能ですが、何のテーブルか分からなくなります。 Oracleの文字数制限は30バイトだと記憶しているのですが、入力したテーブル名は計算すると27バイトで制限以内になります。 このテーブル名は使用できないのでしょうか?

  • テーブル名 記号 access

    テーブル名に「旅館・ホテル」と付けたいのですが ・ってつけても大丈夫でしょうか? また、ホテルは全角、半角どちらがいいでしょうか? 実際にテーブル名を「旅館・ホテル」にしてもエラーになりませんでしたが 記号は使わない方がいいと聞いたことがあるので確認です。

  • JDBCでテンポラリテーブルを扱う

    JDBCを使って、テンポラリテーブル(DBはMySQL)を作成したのですが、CREATE文を発行したクラス内では、INSERT,SELECTできるのですが、別クラス(別画面から別業務クラス)で、テンポラリテーブルにアクセスしようとすると、 テーブル名 doesn't exist というエラーが出てアクセスできません。 どこに原因があると考えられるでしょうか?

    • ベストアンサー
    • Java