码迷,mamicode.com
首页 > 其他好文 > 详细

作死的玩一下计算列

时间:2015-01-30 17:19:29      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

有时候因为之间有关系,就使用到了计算列。所以我又做一下实验

先随便搞张表

Use tempdb
GO


IF OBJECT_ID(TestTR1) IS NOT NULL
        DROP TABLE TestTR1
GO
CREATE TABLE [dbo].[TestTR1](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [ColName] [nvarchar](100) NULL,
    [timestamp] [timestamp] NOT NULL,
    [ColCal]  AS (newid()),
PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)) 

 

然后就可以插入数据了,一看,发现执行多少次,计算列就得出多少次不一样的结果~

INSERT INTO dbo.TestTR1
        ( ColName )
VALUES  ( NCol1
          )

SELECT * FROM dbo.TestTR1
SELECT * FROM dbo.TestTR1

  ID ColName  timestamp  ColCal
1 1 Col1  0x000000000000A412   D6C4F1E6-0C81-4667-A9C3-73FBAC895D29
         
2 1 Col1 0x000000000000A412 32F1D090-070C-4A03-86C7-27A354553EFF
         


那是因为计算列的定义使用了不确定性函数导致的,并且这种情况是不能为计算列添加索引的。如果应用到复制,那么复制的结果,也会出现不一致性。

所以如果要使用计算列,要小心这种情况

 

 

作死的玩一下计算列

标签:

原文地址:http://www.cnblogs.com/Gin-23333/p/4262589.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!