无法在sql server中同时将数据插入到两个相关表中

时间:2014-04-20 14:25:11

标签: sql .net tsql ado.net sql-server-2012

我正在使用C#.net,winforms和sql server 2012编写程序,我的一个表单用于向数据库添加新产品,产品信息存储在两个表中。' prodcutName&#39 ;并且' id'这是一个标识列存储在此表中:

create table productType (
id int,
productName nvarchar(100),
constraint PK_productTpye_id_productName primary key  (id),
constraint UQ_productType_productName unique (productName))

此表中存储的其他产品信息:

create table ingredients(
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)
on update cascade on      delete cascade, 
constraint FK_material_ingredients foreign key (material) references material (materialName)
on update cascade on delete cascade,
)

在我的表单中,我有三个texbox,让用户可以添加产品中使用的材料名称,重量和precent。 关于标识列首先我应该得到产品的id,然后根据id将剩余的数据插入第二个表。 这是我的表格图表:

enter image description here

请帮我弄清楚如何根据标识列使用T-SQL同时将数据插入到两个表中。

1 个答案:

答案 0 :(得分:1)

您无法通过单个查询执行此操作,但您可以在事务中包装多个查询以模拟它。对于事务,如果第二个查询失败,您可以回滚更改,因此您要么更新两个表,要么不更新 - 您不会得到导致问题的部分更新。

您可以直接在代码中使用硬编码查询,也可以在存储过程中执行此操作,这可能是更好的主意。