
SQL Server 临时表在会话中创建,会话结束的时候,数据库自动删除临时表
对于 本地临时表 (#开头的) 其他会话无法访问数据与表结构
对于 全局临时表 (##开头的) 其他会话可以访问数据与表结构
SQL Server会在会话结束以后,自动删除临时表。
1> -- 本地临时表
2> CREATE TABLE #temp_table_local (
3> id INT,
4> value VARCHAR(10)
5> );
6> go
1> -- 全局临时表
2> CREATE TABLE ##temp_table_global (
3> id INT,
4> value VARCHAR(10)
5> );
6> go
临时就是只用一会,用完就删的意思
表和视图……,咋说呢?
你看下面吧!
>
如果再通过记录集读数据,是不是在同一个会话里面啊?
还是
会话
中间
结束过一次了?
sql
server
2种:本地临时
全局临时
1>
--
本地临时表
2>
create
table
#temp_table_local
(
3>
id
int,
4>
value
varchar(10)
5>
);
6>
go
1>
--
全局临时表
2>
create
table
##temp_table_global
(
3>
id
int,
4>
value
varchar(10)
5>
);
6>
go
对于本地临时表,只能当前会话能检索到数据。其他会话无法检索。
对于全局临时表,其他会话也能检索到这个表的数据。
1>
insert
into
#temp_table_local(id,
value)
values
(1,
'one');
2>
insert
into
##temp_table_global(id,
value)
values
(1,
'one');
3>
go
(1
行受影响)
1>
select
count(1)
from
#temp_table_local;
2>
select
count(1)
from
##temp_table_global;
3>
go
-----------
1
(1
行受影响)
-----------
1
(1
行受影响)
另外一个会话
c:\documents
and
settings\wzq>sqlcmd
-s
"localhost\sqlexpress"
1>
use
stock
2>
go
已将数据库上下文更改为
'stock'。
1>
select
count(1)
from
##temp_table_global;
2>
go
-----------
1
(1
行受影响)
临时表在会话中创建,会话结束的时候,数据库自动删除临时表
回头你补上一万分吧!还不起就等几年你水平够了进我团队打工偿还。(^__^) ……
第一:都不用看,你们就把设计概要给理解错了。
以上只是一些较为简单的实现方式。所以更新登录名等信息用触发器根本就是劣质的。
当下普遍用EDM 更新实体的方式,形式较为简洁,基本对更改过的实体进行更新。
如下这个,只是在跨区域跨范围使用。采用了触发器。
USE [EdwinDW]GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo][TRI_CU_CashFlow] ON [dbo][CashFlow] AFTER UPDATE
AS
BEGIN
UPDATE M
SET MLoginPC=NLoginPC,
MLoginName=NLoginName
FROM [dbo][CashFlow] M
INNER JOIN
(
SELECT RID,LoginPC,LoginName FROM [dbo][CU_RLog] A
INNER JOIN
(
SELECT MAX(ID) AS ID FROM [dbo][CU_RLog] B GROUP BY RID
) C ON(AID=CID)
) N ON (convert(binary(16),M%%physloc%%)=NRID)
INNER JOIN INSERTED F ON(MCashNo=FCashNo)
ENDDECLARE @CashNo nvarchar(50) set @CashNo='C13081200006'
DECLARE @LoginPC nvarchar(50) set @LoginPC='KROOK'
DECLARE @LoginName nvarchar(50) set @LoginName='KROOK'
------------------------------
--定期删除临时表任务
------------------------------
--模拟所谓的临时表
INSERT INTO [dbo][CU_RLog]
SELECT
convert(binary(16),A%%physloc%%),GETDATE(),@LoginPC,@LoginName
FROM [dbo][CashFlow] A
WHERE ACashNo=@CashNo
--更新 *** 作
UPDATE [dbo][CashFlow]
SET CashNo=CashNo
WHERE CashNo=@CashNo
--验证判断
SELECT FROM [dbo][CashFlow];
以上只是样例,实际都是自己制定主键方式的。
在sqlserver中请用sql创建一张用户临时表和系统临时表,里面包含两个字段ID和IDValues,类型都是int型
用户临时表:createtable#xx(IDint,IDValuesint)
系统临时表:createtable##xx(IDint,IDValuesint)
区别:
用户临时表只对创建这个表的用户的Session可见,对其他进程是不可见的
当创建它的进程消失时这个临时表就自动删除
全局临时表对整个SQLServer实例都可见,但是所有访问它的Session都消失的时候,它也自动删除
希望你能理解!
以上就是关于#在SQL中的用法,最好举个例子,谢谢大家全部的内容,包括:#在SQL中的用法,最好举个例子,谢谢大家、数据库中临时表与视图区别是什么、sqlserver临时表多长时间自动删除等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)