使用其他表信息计算列

时间:2014-03-12 10:45:10

标签: sql sql-server

我的数据库中有两个表,如下所示:

create table materialPriceAndStandard (
  id int identity(700,3),
  materialName nvarchar(100) not null default (0), 
  unitPrice decimal(19,2) not null default (0),
  carbohydrate tinyint not null default (0),
  protein tinyint not null default (0),
  fat tinyint not null default (0),
  humidity tinyint not null default (0) ,
  minerals tinyint not null default (0),
  totalPrice decimal(19,2) not null
  default((select _weight from ingredients where material = materialName)*(unitPrice)),
  constraint PK_id_materialPriceAndStandard primary key (id),
  constraint UQ_materialName_materialPriceAndStandard unique (materialName), 
  constraint CHECK_totlaMineralAmount check (carbohydrate + protein + fat + humidity + minerals  =100 )
)   

和第二个:

create table ingredients(
  _index int identity(1,1),
   id int,material nvarchar(100),     
   _weight float, _percent float,
   constraint PK_id_material_ingredients primary key (id,material),
   constraint FK_id_ingredients foreign key (id) references productType (id)
)

我想计算总价格的数量' materialPriceAndStandar表中的列使用子查询,该查询在'成分中使用_weight值。表,但我收到此错误:

  

Msg 1046,Level 15,State 1,Line 10
  在此上下文中不允许子查询。只允许使用标量表达式。

计算' totalPrice'的最佳方法是什么?使用成分表中的_weight列将列的值作为计算列?

1 个答案:

答案 0 :(得分:1)

您无法在表创建脚本中构建子查询。

您必须分两步完成:

  1. 创建表格
  2. 使用触发器创建表格后,使用您的查询更新值,或将其写入INSERT/UPDATE脚本