SQL Server中的非确定性数据类型

彩铃

Deterministic数据库列的特定属性引起我的注意时,我正在SQL Server数据库中创建一个表请查看以下屏幕截图:

在此处输入图片说明

我已经知道确定性和非确定性SQL Server函数,但是我想知道它是否以任何方式适用于SQL Server中的数据数据类型?

我问的原因是我逐字扫描了SQl Server v2008和v2012中可用的所有数据类型,但是Deterministic显示Yes了所有字段的值没有显示No任何单一数据类型。

所以我的问题是,这是SQL Server中任何数据类型的适当属性,仍然会影响值在列中的存储方式吗?或者它只是过去的遗产,可能来自SQL Server 2000或SQL Server 2005,过去是一些本质上不确定的数据类型。任何信息对于理解SQL Server中数据类型的这种特性都是非常有用的。到今天为止,SQL Server中是否有本质上不确定的数据类型?

由于我看不到No任何数据类型,因此我变得更加困惑。我也用Google搜索很多,但是每次搜索都将我带到确定性和非确定性SQL Server函数,例如下面的函数,没有人谈论Non-deterministic与SQL Server数据类型有关的特性。

https://technet.microsoft.com/zh-CN/library/ms178091(v=sql.110).aspx

PawełDyl

如果仔细阅读此MSDN文档,则会发现:

IsDeterministic-列是确定性的。此属性仅适用于计算列和视图列。

它适用于从另一个涉及不确定性函数的列派生的列(计算的视图)。

例子:

CREATE TABLE Deterministic
(
    ID int,
    Calculated AS SYSDATETIME()
)

SELECT COLUMNPROPERTY(OBJECT_ID('Deterministic'), 'Calculated', 'IsDeterministic') IsDeterministic
--Returns 0

如果您按如下方式在此表上创建视图并执行以下查询

CREATE VIEW vDeterministic AS
SELECT ID, Calculated, DATEADD(D, 1, Calculated) Tomorrow
FROM Deterministic
GO
SELECT 'Calculated' ColumnName,
    COLUMNPROPERTY(OBJECT_ID('vDeterministic'), 'Calculated', 'IsDeterministic') IsDeterministic
UNION ALL
SELECT 'Tomorrow',
    COLUMNPROPERTY(OBJECT_ID('vDeterministic'), 'Tomorrow', 'IsDeterministic')

您还会收到不确定的列

ColumnName   IsDeterministic
----------   ---------------
Calculated   0
Tomorrow     0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章