MySQL вставка с псевдонимом таблицы
-
11-10-2019 - |
Вопрос
У меня есть два столбца, имеющих одинаковое имя, что и два зарезервированных слова, ключ и значение. При использовании оператора 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.
Поэтому я думаю, что в первую очередь возникает непрерывная ситуация, в то время как технически не соответствует стандартам, на мой взгляд, желательно.