光脚丫学LINQ(044):数据库中的计算所得列
时间:2011-01-07 来源:光脚丫思考
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
相关阅读 更多 +