MySQL temporary table name is per connection, UNIQUE for each connection safely use it

本文探讨了MySQL中临时表的安全性和并发使用问题。当多个用户或同一用户的不同会话同时创建同名临时表时,是否会引发冲突或数据损坏。文章还讨论了是否需要显式删除临时表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

I understand temporary tables are dropped automatically. But are the tables which are created unique? i.e. should I create a different name for the table or does mysql sort this out?

CREATE temporary table TEMP1 TYPE=HEAP select * from CUSTOMERS
.
.
PHP database report stuff here....
.
.
DROP temporary table TEMP1

This creates a temporary table called TEMP1 and is populated from CUSTOMERS.

1. What happens if 2 users run the code at near the same time? Will the TEMP1 table be corrupted?

2. What happens if 1 user fires up 2 browser windows and runs the script at near the same time?

3. Is it really necessary to DROP the table at the end of the code. mysql says that temporary tables are automatically dropped.

I could create a random name rather than TEMP1 that should sort it?

Note that the TYPE=HEAP doesn't really matter here. The same problem should exist if HEAP or not: does creating a temporary table create TEMP1 in seperate user space?
----------------------------------------------------------------------------------

Frank,

This is what I got from mysql docs:

"A temporary table will automatically be deleted if a connection dies and the name is per connection. This means that two different connections can both use the same temporary table name without conflicting with each other or with an existing table of the same name. (The existing table is hidden until the temporary table is deleted.)"

So this means you can safely use any name for your temporary table.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值