MySQLi - tabele tymczasowe
Tabele tymczasowe mogą być bardzo przydatne w niektórych przypadkach do przechowywania danych tymczasowych. Najważniejszą rzeczą, o której należy wiedzieć w przypadku tabel tymczasowych, jest to, że zostaną one usunięte po zakończeniu bieżącej sesji klienta.
Jak wspomniano wcześniej, tymczasowe tabele będą działać tylko tak długo, jak długo trwa sesja. Jeśli uruchomisz kod w skrypcie PHP, tabela tymczasowa zostanie automatycznie zniszczona po zakończeniu wykonywania skryptu. Jeśli jesteś połączony z serwerem bazy danych MySQL za pośrednictwem programu klienta MySQLi, tabela tymczasowa będzie istnieć do momentu zamknięcia klienta lub ręcznego zniszczenia tabeli.
Przykład
Oto przykład pokazujący użycie tabeli tymczasowej. Ten sam kod może być używany w skryptach PHP przy użyciumysqli_query() funkcjonować.
mysql> CREATE TEMPORARY TABLE SalesSummary (
-> product_name VARCHAR(50) NOT NULL
-> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
-> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
-> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO SalesSummary
-> (product_name, total_sales, avg_unit_price, total_units_sold)
-> VALUES
-> ('cucumber', 100.25, 90, 2);
mysql> SELECT * FROM SalesSummary;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber | 100.25 | 90.00 | 2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)
Kiedy wydasz polecenie SHOW TABLES, twoja tymczasowa tabela nie pojawi się na liście. Teraz, jeśli wylogujesz się z sesji MySQLi, a następnie wydasz polecenie SELECT, to w bazie danych nie znajdziesz żadnych danych. Nawet twój tymczasowy stół też by nie istniał.
Upuszczanie tabel tymczasowych
Domyślnie wszystkie tabele tymczasowe są usuwane przez MySQLi po zerwaniu połączenia z bazą danych. Jeśli jednak chcesz je usunąć w międzyczasie, zrób to, wydając polecenie DROP TABLE.
Poniżej znajduje się przykład usuwania tabeli tymczasowej -
mysql> DROP TABLE SalesSummary;
mysql> SELECT * FROM SalesSummary;
ERROR 1146: Table 'TUTORIALS.SalesSummary' doesn't exist