Вопрос

У меня есть два столбца, имеющих одинаковое имя, что и два зарезервированных слова, ключ и значение. При использовании оператора SELECT я могу создать псевдоним таблицы и решить его таким образом.

Теперь я пытаюсь вставить данные, и кажется, что вы не можете создавать псевдоним таблицы в операторе вставки.

INSERT INTO attributeStrings ats
(ats.ItemID,ats.Key,ats.Value)
VALUES (3,'Categories','TechGUI')

Я получаю ошибку в 'ats (ats.ItemID,ats.Key,ats.Value) VALUES (3,'Categories','TechGUI')' указывая, что псевдоним не может быть создан.

Есть ли какие -либо способы решить это без переименования ключа и значения столбцов?

Это было полезно?

Решение

Используйте обратно, чтобы избежать зарезервированных слов.

  INSERT INTO `attributeStrings` (`ItemID`, `Key`,`Value`) VALUES (3,'Categories','TechGUI')

Похоже, вставка не поддерживает псевдоним. глянь сюда


РЕДАКТИРОВАТЬ: ОК, MySQL REF не говорит псевдоним во вставке


Это работает

mysql> INSERT INTO `attributeStrings` (`ItemID`, `Key`,`Value`) VALUES (3,'Categories','TechGUI');
Query OK, 1 row affected (0.03 sec)

mysql> select * from attributeStrings;
+--------+------------+---------+
| ItemId | Key        | Value   |
+--------+------------+---------+
|      3 | Categories | TechGUI |
+--------+------------+---------+
1 row in set (0.00 sec)

Другие советы

Легко быть Мудрый парень На основании вашего вопроса

INSERT INTO attributeStrings
VALUES (3,'Categories','TechGUI');
/* if the table have more than 3 columns, fill-up every column then */

Другие проблемы

Невыразимый иметь Camelcase, потому что Windows еще не поддерживает имя файла с чувствительным к корпусу.

Таким образом, вы практически можете иметь ту же таблицу с другим случаем в Linux/Mac, но не в Windows

mysql> create table abc (id int(10));
Query OK, 0 rows affected (0.00 sec)

mysql> create table abC (id int(10));
Query OK, 0 rows affected (0.01 sec)

Ключ - это

Зарезервированное слово

В MySQL, так что его нужно цитировать

Вы можете проверить все зарезервированные слова здесь

кажется, что вы не можете создавать псевдоним таблицы в операторе вставки

Некоторые продукты SQL (например, SQL Server) разрешают это, но я не уверен, что это хорошо.

Согласно стандартам SQL, псевдоним должен иметь эффект того, что таблица материализована, т.е. INSERT (или любой другой аромат обновления) к псевдонированному таблице должен оставить базовую таблицу (ы) базовой (ы).

В SQL Server, такой INSERT Влияет на базовую базовую таблицу (ы), но я думаю, что фактический (несовместимый) эффект-это то, что большинство кодеров SQL ожидают в этой ситуации. Иными словами, действительное заявление вставки, которое привело к тому, что не добавлялись строки, я думаю, изначально будет подозреваться в качестве ошибки, хотя это и должен работать стандартный SQL.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top