发布于 2014-12-12 04:05:34
来自MySQL文档:
创建表时可以使用临时关键字。临时表仅对当前会话可见,并在会话关闭时自动删除。这意味着两个不同的会话可以使用相同的临时表名,而不会相互冲突,或者使用同名的现有非临时表。更多信息:http://dev.mysql.com/doc/refman/5.1/en/create-table.html#create-temporary-table
但是,如果我使用一个连接,会发生什么呢?可能你会有一些数据冲突。在过去,我使用具有唯一id的临时表来避免冲突,如果我多次调用具有相同连接的过程:
DELIMITER $$
DROP PROCEDURE some_proc $$
CREATE PROCEDURE some_proc ()
BEGIN
-- creating a unique value
DECLARE VARIABLE tmp_uuid varchar(50);
SET tmp_uuid = uuid();
CREATE TEMPORARY TABLE IF NOT EXISTS tbl_temporary
(
uuid_id varchar(50),
col1 varchar(10),
col2 varchar(10),
INDEX(uuid_id)
);
-- do some operations on that
INSERT INTO tbl_temporary(uuid_id, ...) VALUES (tmp_uuid,...);
-- now, cleaning the data
DELETE FROM tbl_temporary WHERE uuid_id = tmp_uuid;
-- if the current session is closed the table will be automatically deleted
END$$
DELIMITER ;https://stackoverflow.com/questions/27242892
复制相似问题