在SQL中更改列方程

时间:2015-07-01 17:27:17

标签: sql sql-server database

我正在使用MS SQL Server,我已经创建了多个列和数据库。一个名为Inventory的数据库中的3个列是:CaseQuantity,UnitsQuantity和TotalUnits。如何更改TotalUnits列(CaseQuanity * 12)+ UnitsQuantity?

我是新手。非常感谢你的时间,非常感谢。

2 个答案:

答案 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属性已关闭,则计算列将只是一个虚拟列。此列的数据不会存储在磁盘上   每次在脚本中引用时都会计算值。如果   此属性设置为活动状态,然后计算列的数据将为   存储在磁盘上。
  •   
  • 引用列中的任何更新都将在计算列中自动同步(如果它是持久的。
  •   
  • 除了一些其他条件,还需要在计算列上创建索引。
  •   

SQL Fiddle Demo

答案 1 :(得分:0)

您可以在表格中使用计算列。不应插入TotalUnits列。它被计算到其他列。 更多细节参考此链接

https://msdn.microsoft.com/en-us/library/ms188300.aspx