多语言展示
当前在线:1359今日阅读:103今日分享:49

sqlserver计算列攻略 适用于计算金额=单价*数量

sqlserver数据库可以创建计算列,并且可以勾选是否持久化,如果不持久化的计算列,则是虚拟存在的列,不会真正存储数据,在取值时动态计算。如果是持久化的计算列,则会存储数据
工具/原料

sql server

方法/步骤
1

计算列     1)计算列是指在创建一个表的列时,指定其【值=列1*列2】类似这样的计算公式,通常适用于不变的公式,例如,单价*数量=金额,就可以将金额设置为计算列,那么金额列就永远=单价*数量了     2)勾选了持久化的计算列,与普通列一样的查询,建立索引,因为是存在物理列的,且值都是计算好存储在列中的     3)没有勾选持久化的计算列,只是一个虚拟的列,不会在数据库表中实际存在这个列,每次使用时,都是根据公式自动计算结果,所以,不能在这个列上面添加索引     4)计算列:不能作为另外一个计算列的一部分,也不能作为触发器中的update判断

2

创建计算列     创建表的同时,创建计算列Amount,persisted标记用于标记列为持久化,SQL语句如下:     create table ComputeTable(         Id varchar(36) not null,            -- 主键 GUID         Price decimal(6,2) null,            -- 单价         Number int null,                      -- 数量         Amount as (Price * Number) persisted   -- 【计算列】金额 = 单价 * 数量     );

3

查看计算列持久化     1)通过上面SQL语句创建的计算列,由于使用了persisted标记,所以,默认就是持久化     2)在创建的表 ComputeTable 点击鼠标右键,选择【设计】,在弹出窗口中,选中Amount行记录,在下面就可以看到【计算列规范】显示的公式,与 持久化的标志

4

插入测试数据(失败的情况)     往上面创建的表 ComputeTable中插入几行测试数据,对于计算列Amount,也写SQL插入值,会提示:“不能修改列,因为它是计算列,或者是 UNION 运算符的结果”

5

插入测试数据(成功的情况)     对于有计算列的表插入记录,计算列是不能赋值的,它会通过创建表时的公式,自动计算值

6

查询数据     使用select语句,直接查询表中所有语句,因为表中目前只有几行测试数据,现实场景中,最好不要select全表数据

推荐信息