#在SQL中的用法,最好举个例子,谢谢大家

#在SQL中的用法,最好举个例子,谢谢大家,第1张

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临时表多长时间自动删除等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10203720.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存