当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
如果仔细阅读此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] 删除。
我来说两句