有没有办法让列默认为其他列的计算? SSMS给了我一个错误(SQL Server 2012),列名不能在为列设置默认约束的上下文中使用。如果这是不允许的,是否有基于表达式/子句执行(或其他)的解释,这解释了为什么不允许这样做?这是特定于SQL Server,还是适用于其他DBMS?
对于这个问题,让我们假设将计算出的值存储在表中而不仅仅是ad hoc计算。我意识到这是DB设计中的考虑因素。
明显的解决方法是在INSERT子句中包含计算,但这会分离有关列的信息。在我看来,这将是一个更有效的表格相关品质的集合,以保持在表中。
〜布鲁斯
答案 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;