我正在使用MS SQL Server,我已经创建了多个列和数据库。一个名为Inventory的数据库中的3个列是:CaseQuantity,UnitsQuantity和TotalUnits。如何更改TotalUnits列(CaseQuanity * 12)+ UnitsQuantity?
我是新手。非常感谢你的时间,非常感谢。
答案 0 :(得分:1)
如果您尝试将新计算列添加到现有表中,可以使用ALTER TABLE
这样执行此操作:
ALTER TABLE your_table --change this to your tablename
ADD TotalQuantity AS (CaseQuantity * 12) + UnitsQuantity PERSISTED
如果您只想选择新的computed
列,则可以执行以下操作:
SELECT CaseQuantity
,UnitsQuantity
,TotalUnits
,(CaseQuantity * 12) + UnitsQuantity AS TotalQuantity
FROM your_table --change this to your tablename
如果您希望使用新的计算列重新创建表,那么您可以执行以下操作:
CREATE TABLE your_table
(
CaseQuantity int
,UnitsQuantity int
,TotalUnits int
,TotalQuantity AS (CaseQuantity * 12) + UnitsQuantity PERSISTED
)
<强>持久化的强>
您可能已经注意到我也使用了“Persisted”属性 计算列。已计算列的此属性 在SQL Server 2005及更高版本中引入。这对任何人都很重要 计算列,因为许多其他功能依赖于它。成为 能够使计算列成为持久化必须的 确定性的。
以下是一些规则:
- 如果Persisted属性已关闭,则计算列将只是一个虚拟列。此列的数据不会存储在磁盘上 每次在脚本中引用时都会计算值。如果 此属性设置为活动状态,然后计算列的数据将为 存储在磁盘上。
- 引用列中的任何更新都将在计算列中自动同步(如果它是持久的。
- 除了一些其他条件,还需要在计算列上创建索引。
答案 1 :(得分:0)
您可以在表格中使用计算列。不应插入TotalUnits列。它被计算到其他列。 更多细节参考此链接