现在的位置: 首页 > 综合 > 正文

光脚丫学LINQ(044):数据库中的计算所得列

2012年07月20日 ⁄ 综合 ⁄ 共 748字 ⁄ 字号 评论关闭

视频演示:http://u.115.com/file/f220dc8a89

演示重点
数据库中的计算所得列实质上指的是列的数值是由表达式的计算结果提供的。
比如,下面的SQL语句,创建了一个包含TotalValue的计算所得列的数据表,
在列名的后面使用AS关键字,后面接着写上所使用到的表达式,就可以了。

CREATE TABLE [dbo].[Products](
 [ProductID] [int] IDENTITY(1,1) NOT NULL,
 [ProductName] [nvarchar](40) NOT NULL,
 [UnitPrice] [money] NULL,
 [UnitsInStock] [smallint] NULL,
 [TotalValue]  AS ([UnitPrice]*[UnitsInStock])

根据上面的表达式可以知道TotalValue列的数值,
是由UnitPrice和UnitsInStock这两个列确定的,即这两列数值的乘积。

INSERT
当使用INSERT命令向包含计算所得列的数据表添加新纪录的时候,
不要试图为新纪录的计算所得列提供数值,
那样做的话,这个添加纪录的SQL语句会发生错误,添加失败!
原因很简单,计算所得列的值是由数据库根据表达式自行计算的。
你偏偏给它赋值,岂不是让数据库觉得很不爽?于是乎,错误你一把又怎样?
你可能会想,如果我也按照表达式来计算的话,
这样数值不就正确了吗?应该会被正确执行的吧?
结论是,不可以!数据库会咆哮着对你说:你越权了!^_^

UPDATE
当我们执行更新SQL命令的时候,凡是表达式中涉及到的数据列的数值被更新了,
那么,数据库也会自动更新计算所得列中的数值。
同样的,在更新SQL命令中,也不要试图为计算所得列赋值。
那样做,同样是错误的!

光脚丫思考 2011-1-7

抱歉!评论已关闭.