Saya mendapat masalah aneh ini hari ini ketika saya menjatuhkan meja sementara. Saya menjatuhkan tabel sementara dan menghapus tabel hanya untuk memverifikasi. Tapi, meja itu tidak terjatuh. Setelah beberapa pencarian saya menemukan bahwa:
MySQL memungkinkan untuk membuat tabel sementara dengan nama yang sama dengan tabel permanen. Jadi meja sementara dijatuhkan dan bukan meja permanen. Saya benar-benar bingung dengan meja yang saya gunakan.
Versi MySQL: 5.1.36-enterprise-gpl-pro-log
Inilah yang saya uji:
mysql> create table test(id int);
Query OK, 0 rows affected (0.00 sec)
mysql> desc test;
| Field | Type | Null | Key | Default | Extra |
--------------------------------------------------
id int(11) YES NULL
mysql> create temporary table test(id int);
Query OK, 0 rows affected (0.00 sec)
mysql> desc test;
| Field | Type | Null | Key | Default | Extra |
--------------------------------------------------
id int(11) YES NULL
mysql> drop table test;
Query OK, 0 rows affected (0.00 sec)
mysql> desc test;
| Field | Type | Null | Key | Default | Extra |
--------------------------------------------------
id int(11) YES NULL
Apakah ini bug atau ada cara alternatif untuk mengatasi ini?
create temporary table fake_db.t as select*from t
.Dari manual ( CREATE TABLE ):
Itu berarti setelah Anda membuat tabel sementara dengan nama yang sama dengan beberapa tabel yang ada, Anda tidak bisa mengakses tabel normal dengan nama itu, tetapi hanya yang sementara (selama sesi itu). Jika Anda berpikir bahwa membuka ruang untuk kesalahan, gunakan nama lain untuk tabel sementara (mis. Gunakan awalan
temp_
) - itu sederhana dan tidak menyisakan ruang untuk kebingungan.sumber
Anda telah menjawab pertanyaan ini dalam pertanyaan pertama Anda. Anda tidak " perlu menyisipkan catatan dalam tabel permanen ... nama yang sama .... tabel sementara ... sesi yang sama" karena Anda memiliki kendali atas nama tabel!
Anda cukup memastikan bahwa tabel sementara diberikan awalan / akhiran tmp _ / _ tmp atau serupa karena ini menghindari kebingungan (sebagaimana dimaksud oleh @SpeedyGonsales).
Jika Anda membuat kesalahan semacam ini sekarang, pikirkan betapa mudahnya membuat seseorang yang baru dalam sistem dalam waktu satu tahun! Organisasi Anda (bahkan jika itu hanya Anda!) Harus memiliki konvensi penamaan , jika tidak Anda akan mendapatkan SNAFU semacam ini .
sumber