Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Добавление строк при CREATE TEMPORARY TABLE / 8 сообщений из 8, страница 1 из 1
09.01.2018, 08:40
    #39580811
sys23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк при CREATE TEMPORARY TABLE
При выполнении следующих запрос
Код: sql
1.
2.
3.
4.
5.
DROP TABLE IF EXISTS temp.t1 CASCADE;
CREATE TEMPORARY TABLE  temp.t1 AS SELECT '1' AS p1, '2' AS p2; 
CREATE TEMPORARY TABLE  IF NOT EXISTS temp.t1 AS SELECT '2' AS p1, '3' AS p2; 
CREATE TEMPORARY TABLE  IF NOT EXISTS temp.t1 AS SELECT '4' AS p1, '5' AS p2; 
SELECT * FROM temp.t1


каждый запрос CREATE TEMPORARY TABLE IF NOT EXISTS добавляет новые данные во временную таблицу temp.t1.
Результат:
p1 | p2
----------------
1 | 2
2 | 3
4 | 5
Кто-нибудь сталкивался с таким эффектом?
...
Рейтинг: 0 / 0
09.01.2018, 09:12
    #39580825
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк при CREATE TEMPORARY TABLE
Хм, это противоречит доке
https://dev.mysql.com/doc/refman/5.7/en/create-table-select.html For CREATE TABLE ... SELECT, if IF NOT EXISTS is given and the target table exists, nothing is inserted into the destination table, and the statement is not logged.
...
Рейтинг: 0 / 0
09.01.2018, 09:14
    #39580826
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк при CREATE TEMPORARY TABLE
Нет.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
mysql> DROP TABLE IF EXISTS temp.t1 CASCADE;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TEMPORARY TABLE  temp.t1 AS SELECT '1' AS p1, '2' AS p2; 
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> CREATE TEMPORARY TABLE  IF NOT EXISTS temp.t1 AS SELECT '2' AS p1, '3' AS p2; 
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CREATE TEMPORARY TABLE  IF NOT EXISTS temp.t1 AS SELECT '4' AS p1, '5' AS p2; 
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> SELECT * FROM temp.t1;
+----+----+
| p1 | p2 |
+----+----+
| 1  | 2  |
+----+----+
1 row in set (0.00 sec)
...
Рейтинг: 0 / 0
09.01.2018, 09:16
    #39580827
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк при CREATE TEMPORARY TABLE
Единственное предположение - Вы выполняете запросы не через консоль, а в каком-то GUI-клиенте... А они любят посвоевольничать.
...
Рейтинг: 0 / 0
09.01.2018, 23:23
    #39581365
sys23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк при CREATE TEMPORARY TABLE
Akina, данный эффект получил от запросов, сохранённых в процедуре в БД MySQL.
В работе использую dbForge Studio for MySQL. Выполнение указанного мной кода на изображении (уже не в процедуре).
...
Рейтинг: 0 / 0
09.01.2018, 23:33
    #39581366
sys23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк при CREATE TEMPORARY TABLE
Вот из командной строки:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
mysql> DROP TABLE IF EXISTS temp.t1 CASCADE;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TEMPORARY TABLE  temp.t1 AS SELECT '1' AS p1, '2' AS p2;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> CREATE TEMPORARY TABLE  IF NOT EXISTS temp.t1 AS SELECT '2' AS p1, '3' AS p2;
Query OK, 1 row affected, 1 warning (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> CREATE TEMPORARY TABLE  IF NOT EXISTS temp.t1 AS SELECT '4' AS p1, '5' AS p2;
Query OK, 1 row affected, 1 warning (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM temp.t1;
+----+----+
| p1 | p2 |
+----+----+
| 1  | 2  |
| 2  | 3  |
| 4  | 5  |
+----+----+
3 rows in set (0.02 sec)


Версия сервера 5.1.73. Может дело в этом!? Какая у Вас версия БД
...
Рейтинг: 0 / 0
10.01.2018, 07:34
    #39581429
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк при CREATE TEMPORARY TABLE
sys23Версия сервера 5.1.73. Может дело в этом!?Да, действительно, в старых версиях логика другая:
https://dev.mysql.com/doc/refman/5.5/en/create-table-select.html For CREATE TABLE ... SELECT, if IF NOT EXISTS is given and the destination table already exists, the result is version dependent. Before MySQL 5.5.6, MySQL handles the statement as follows:

The table definition given in the CREATE TABLE part is ignored. No error occurs, even if the definition does not match that of the existing table. MySQL attempts to insert the rows from the SELECT part anyway.и далее по тексту
...
Рейтинг: 0 / 0
10.01.2018, 08:41
    #39581457
sys23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк при CREATE TEMPORARY TABLE
miksoft, большое спасибо!
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Добавление строк при CREATE TEMPORARY TABLE / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]