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

2024-10-15 08:04:11

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

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

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 -- 【计算列】金额 = 单价 * 数量 );

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

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

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

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

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

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

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

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

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

7、计算列修改值 1)使用sql语句直接修改计算列 Amount的值,会提示错误:“不能修改列 "Amount",因为它是计算列,或者是 UNION 运算符的结果” 2)如果想修改计算列的值,只能修改其公式关联的其他栏位值,这样计算列的值会自动更新

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