CREATE TABLE abc@gmail.com (..) - PullRequest
       5

CREATE TABLE abc@gmail.com (..)

1 голос
/ 11 сентября 2010

Как создать таблицу в Oracle с именем abc@gmail.com

Я пытался сделать CREATE TABLE abc@gmail.com (..)

, но это дает мне ошибку, поэтому яискал какой-то другой способ сделать это

Ответы [ 6 ]

4 голосов
/ 11 сентября 2010

Либо:

  1. Поставьте двойные кавычки вокруг имени таблицы:

    CREATE TABLE "abc@gmail.com" ...
    
  2. Не помещайте специальные символы в вашу таблицуимена.

Будущие пользователи вашей базы данных будут благодарны вам, если вы выберете вариант 2.

3 голосов
/ 11 сентября 2010

Я думаю, не очень хороший способ разместить @. символов в имени таблицы.

Я думаю, что это не очень хороший способ создания каждой таблицы для одного пользователя электронной почты. Вероятно, у вас есть большая проблема проектирования базы данных , и вы пытаетесь найти решение там, где ее нет.

Подумайте о базе данных emails, таблице users, где каждый пользователь имеет unique ID и username и domain в другом столбце. В столбце ID вы создали индекс, затем вам нужно найти и добавить отношение пользовательского экземпляра в другие таблицы .

2 голосов
/ 11 сентября 2010

С http://ora -903.ora-code.com / :

ORA-00903: неверное имя таблицы

Причина: таблица илиИмя кластера неверно или не существует.Это сообщение также выдается, если в операторе ALTER CLUSTER или DROP CLUSTER указано недопустимое имя кластера или нет имени кластера.

Действие: Проверьте орфографию. Действительное имя таблицы или имя кластера должно начинаться с буквы и может содержать только буквенно-цифровые символы и специальные символы $, _ и #. Имя должно быть не более 30 символов и не может бытьзарезервированное слово.

Мартин и CanSpice указали, что это технически возможно, но, да ... вы требуете много проблем с этим подходом.И почему (на земле) вы бы назвали таблицу после адреса электронной почты в первую очередь?Я был бы очарован, узнав.

1 голос
/ 11 сентября 2010

Чтобы использовать нестандартные символы в идентификаторах, вы можете разделить их двойными кавычками.

CREATE TABLE "abc@gmail.com"(a int);

Примечание: некоторые обсуждения этого вопроса напомнили мне простую статью для разговоров .Я только что проверил, и это возможно в Oracle.

CREATE TABLE "╚╦╩╗" ( "└┬┴┐" nvarchar2(10));

INSERT  INTO "╚╦╩╗" VALUES ( '└┬┴┐' );

SELECT * FROM    "╚╦╩╗";

Примечание. Я не предполагаю, что кто-то на самом деле делает это.

0 голосов
/ 11 сентября 2010

Если нужно, вы всегда можете назвать таблицу «abc_at_gmail.com» и продолжить ее.

Я полагаю, что at-sign означает «ссылку на другую базу данных» в Oracle. Вам не повезло в сохранении адреса электронной почты.

Если вам действительно нужны несколько адресов электронной почты, почему бы вам не создать таблицу пользователей и иметь несколько строк, по одной на адрес электронной почты, и сделать адрес электронной почты уникальным индексом в таблице? Ваша идея дизайна должна нарушать какое-то правило нормализации.

0 голосов
/ 11 сентября 2010

Какое странное имя для таблицы.

У меня нет доступа к экземпляру Oracle, чтобы узнать, какую ошибку вы получаете, но он будет ссылаться на третий пункт ниже:

  • Имя таблицы должно начинаться сбуква.
  • Имя таблицы не может быть длиннее 30 символов.
  • Имя таблицы должно состоять из буквенно-цифровых символов или следующих специальных символов: $, _ и #.
  • Имя таблицы не может быть зарезервированным словом.

Этот адрес электронной почты выглядит так, как если бы он был в таблице, как данные.

Подумайте, что вы собираетесь хранить в таблице, и это должно дать вам более подходящее имя таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...