用于运行存储过程的MySQL唯一会话

用于运行存储过程的MySQL唯一会话,mysql,stored-procedures,Mysql,Stored Procedures,如果我有一个存储过程,它每次运行时都会创建临时表X,那么有没有一种方法可以运行具有某种唯一会话ID的存储过程,这样当人员a运行存储过程并创建临时表X时,当人员B运行相同的过程时,它也不会创建临时表X,然后崩溃。 我基本上希望有一个过程可以做一些事情,但我希望多人同时运行同一个过程,而不会因为已经创建了临时表而导致过程失败。只是想知道我是否可以使用MySQL中的会话变量,或者使用某人的连接信息使会话对每个运行该过程的人都是唯一的。可能每次都会创建表X_会话_ID。是否有一种方法可以在存储过程中生成

如果我有一个存储过程,它每次运行时都会创建临时表X,那么有没有一种方法可以运行具有某种唯一会话ID的存储过程,这样当人员a运行存储过程并创建临时表X时,当人员B运行相同的过程时,它也不会创建临时表X,然后崩溃。


我基本上希望有一个过程可以做一些事情,但我希望多人同时运行同一个过程,而不会因为已经创建了临时表而导致过程失败。只是想知道我是否可以使用MySQL中的会话变量,或者使用某人的连接信息使会话对每个运行该过程的人都是唯一的。可能每次都会创建表X_会话_ID。是否有一种方法可以在存储过程中生成唯一的id?

您可以使用它创建所需的临时表,以防止用户之间的名称冲突,而无需生成唯一标识符

临时表

创建表时可以使用临时关键字临时表仅对当前连接可见,并在连接关闭时自动删除。这意味着两个不同的连接可以使用相同的临时表名称,而不会相互冲突或与相同名称的现有非临时表冲突


您可以使用创建所需的临时表来防止用户之间的名称冲突,而无需生成唯一标识符

临时表

创建表时可以使用临时关键字临时表仅对当前连接可见,并在连接关闭时自动删除。这意味着两个不同的连接可以使用相同的临时表名称,而不会相互冲突或与相同名称的现有非临时表冲突


谢谢我使用以下创建临时表搜索列temp1作为我的过程的一部分。所以每次程序运行时,它都会创建这个临时表。这是否意味着,当人员A连接并运行过程,人员B连接并同时运行相同的过程时,可能会在一个数据库上创建两个搜索列\u temp1表?@user1236443是,但两个用户都看不到另一个用户的临时表,两者都可以有一个同名的表,并且只能看到它们自己的表。我认为我遇到的问题是,存储过程具有特定的特权,由我定义,并且倾向于以我的身份运行(即SQL安全定义器)。所以每次这个过程运行时,它都是在我的详细信息下运行的。这样做是为了让我不担心;I don’我不必给很多用户同样的权限,只需运行这一个过程。临时表还能用吗?是否基于连接?或者,如果它一直在我的管理下运行,它会因为临时表已经创建而失败吗?临时表是每个连接的,而不是每个用户的。只要对过程的调用来自不同的连接,我就看不出有问题。如果需要从单个连接顺序多次调用它,则需要在过程结束时删除临时表,因为它仅在断开连接时自动完成。谢谢。我使用以下创建临时表搜索列temp1作为我的过程的一部分。所以每次程序运行时,它都会创建这个临时表。这是否意味着,当人员A连接并运行过程,人员B连接并同时运行相同的过程时,可能会在一个数据库上创建两个搜索列\u temp1表?@user1236443是,但两个用户都看不到另一个用户的临时表,两者都可以有一个同名的表,并且只能看到它们自己的表。我认为我遇到的问题是,存储过程具有特定的特权,由我定义,并且倾向于以我的身份运行(即SQL安全定义器)。所以每次这个过程运行时,它都是在我的详细信息下运行的。这样做是为了让我不担心;I don’我不必给很多用户同样的权限,只需运行这一个过程。临时表还能用吗?是否基于连接?或者,如果它一直在我的管理下运行,它会因为临时表已经创建而失败吗?临时表是每个连接的,而不是每个用户的。只要对过程的调用来自不同的连接,我就看不出有问题。如果需要从单个连接顺序多次调用它,则需要在过程结束时删除临时表,因为它只在断开连接时自动完成。