SQL Server 临时表名前使用一个#号,临时表是局部的,使用两个#号,临时表是全局的,我是用winform开发程序, 都是用SA登录SQL SERVER ,
第一个问题 假设 同时有5个用户同时创建 临时表 #aaa 是不是就冲突了呢.
第二个问题 在SQL中创建用户SB(权限等同于SA), 用SA 创建临时表 #EEE ,用SB创建临时表 #EEE 会不会冲突
第三个问题 用SA 创建全局临时表 ##EEE ,用SB创建全局临时表 ##EEE 会不会冲突
局部临时表是会话级别,当前会话(连接)中可用,当前会话关闭后,释放(可手动释放)。其他会话不可访问。
全局临时表同样是会话级别,当前会话中可用,当前会话结束后,释放掉。
和局部临时表的区别在于,如果当前会话未关闭,那么其他会话可以访问这个临时表。
临时表在会员中只是一个代号,在实际的系统临时库中,真实表名会自动处理。
可以理解为一个映射关系。会话名+临时表名=>临时库的真实表名
现在回答你的问题:
1、如果5个用户不是同一个连接(一般不会出现,不排除你一直开着连接不关闭),不会冲突;
2、这个就绝对不会冲突,因为不可能是一个连接了;
3、同问题2,不是同一个连接,不会冲突;
1. 如果5个用户都是用SA帐户登录, 是算一个连接,还是5个连接呢?
@zhengyingcan: 看你是SqlConnection是不是一个。
@幻天芒: SqlConnection 字符串内容是一样的,只是客户端不同, 就是在不同的客户端电脑上执行
@zhengyingcan: 那就不是一个连接。SqlConnection对象,不是指连接字符串!
一、#aaa只对当前用户的连接可见。
二、如果是在存储过程中创建、或不同用户的不同会话创建,系统会自动后面加一组数字区分,如#EEE123等。
三、全局临时表不允许重名
一. 如果5个用户都是用SA帐户登录, 是算一个连接,还是5个连接呢?
@zhengyingcan:看你是SqlConnection是不是一个。
@幻天芒: SqlConnection 字符串内容是一样的,只是客户端不同, 就是在不同的客户端电脑上执行