使用列进行默认约束的计算 - SQL Server 2012

时间:2014-09-05 17:17:16

标签: sql sql-server

有没有办法让列默认为其他列的计算? SSMS给了我一个错误(SQL Server 2012),列名不能在为列设置默认约束的上下文中使用。如果这是不允许的,是否有基于表达式/子句执行(或其他)的解释,这解释了为什么不允许这样做?这是特定于SQL Server,还是适用于其他DBMS?

对于这个问题,让我们假设将计算出的值存储在表中而不仅仅是ad hoc计算。我意识到这是DB设计中的考虑因素。

明显的解决方法是在INSERT子句中包含计算,但这会分离有关列的信息。在我看来,这将是一个更有效的表格相关品质的集合,以保持在表中。

〜布鲁斯

1 个答案:

答案 0 :(得分:0)

在这里你去!

declare @flower_order table(
[flower]     [sysname]
, [quantity] [int]
, [price]    [money]
, [tax]      [float]
, [total_price] as round([quantity] * [price] * ( 1 + [tax] )
         , 2));
insert into @flower_order
        ([flower],[quantity],[price],[tax])
values      (N'rose',5,8.25,.08),
        (N'tulip',3,4.74,.0725);
select [flower]
   , [quantity]
   , [price]
   , [tax]
   , [total_price]
from   @flower_order;