Ehs*_*hmi 32 mysql concurrency temp-tables
我有一个使用临时表的MySQL存储过程.假设我的表名是'temp',我用它来存储一些中间数据.它将在程序开始时创建,并将在最后删除.
CREATE PROCEDURE p()
BEGIN
CREATE TEMPORARY TABLE \`temp\`(...);
INSERT INTO \`temp\` VALUES(...);
DROP TEMPORARY TABLE \`temp\`;
END;
Run Code Online (Sandbox Code Playgroud)
问题是这个存储过程可能会被不同的用户同时使用,所以我想知道这是否会导致任何问题(即临时表中插入数据的任何冲突).换句话说临时表是对同一个SP的不同调用内的共享资源吗?
Bil*_*win 51
不,临时表仅限于数据库连接的范围.您可以在同一数据库连接期间对过程的后续调用中使用临时表,但其他连接无法访问它.他们可以使用相同的名称创建表,但每个临时表都是独立的.关闭连接时临时表会消失.
zer*_*kms 14
临时表仅对当前会话可见.
因此,如果您有几个同时进行的会话 - 每个会话将拥有自己的具有相同名称的独立临时表.
文档:http://dev.mysql.com/doc/refman/5.1/en/create-table.html,ctrl + f表示"你可以使用TEMPORARY"
| 归档时间: |
|
| 查看次数: |
13524 次 |
| 最近记录: |