MySQL作為廣泛使用的一個開源關系型數據庫管理系統,臨時表也是其中一項重要的特性之一。臨時表可以用來存儲臨時的數據集合,通常情況下是在查詢數據的過程中進行使用。在MySQL中,我們可以使用CREATE TEMPORARY表名()的語法創建臨時表。然而,有時候在創建完臨時表之后,我們無法立即查詢到這些表中的數據,這究竟是為什么呢?
CREATE TEMPORARY TABLE temp_table( id INT PRIMARY KEY, name VARCHAR(20) ); INSERT INTO temp_table(id, name) VALUES(1, 'Tom'), (2, 'John'), (3, 'Lucy');
在上述的代碼中,我們創建了一個名為“temp_table”的臨時表,并插入了三條數據記錄。但是,如果我們在創建完成之后立即查詢這個臨時表的數據,就會發現MySQL報錯了。報錯信息為:Table 'temp_table' doesn't exist。
這是因為臨時表在創建完成之后,并不會立即將這個臨時表保存到內存中,而是等待當前事務結束之后才會被銷毀。在該事務中,MySQL會將這個臨時表的定義存儲在臨時庫中,并給該表取一個名字,此時我們就可以使用這個名字來操作這個臨時表。而如果直接查詢這個臨時表,由于它還沒有被保存到內存中,因此會出現上述的報錯信息。
為了避免出現上述的問題,在創建完臨時表之后,我們可以先提交事務,或者退出當前事務,再查詢這個臨時表的數據。這樣就可以保證臨時表已經被保存到內存中,可以被正確地訪問到了。
上一篇css固定浮動