这是我们的3张桌子。我们希望在表格中添加新配方。用户获得一个屏幕,他们可以在其中填写RecipeName,方法,他们可以从下拉菜单中选择3种成分。我们正在使用C#在Visual Studio中使用asp.net。
因此,当用户填写每个字段时,RecipeName和Method将被添加到Recipes表中。然后必须将属于配方的成分添加到IngredientRecipe表中。
如何编写此查询,因为我们不知道RecipeId,因为这个自动增量?
食谱
RecipeId RecipeName Method
1 Bacon and Brocilli Bake the bacon and cook the brocolli
2 Rice with chicken Cook the rice and bake the chicken
4 Potato and Carrot Cook the potatoes and the carrots
6 Rice Chicken and Carrot Cook everything
成分
IngredientId IngredientName IngredientCategorie
2 Bacon 3
3 Brocolli 2
4 Potato 1
5 Chicken 3
6 Carrot 2
7 Rice 1
IngredientRecipe
RecipeUniqueID RecipeId IngredientId
1 1 2
2 1 3
3 2 5
4 2 7
5 4 4
6 4 6
7 1 4
8 2 6
9 4 2
10 6 7
11 6 6
12 5 5
答案 0 :(得分:3)
首先保存配方和配料,使它们具有有效的ID,然后保存关联。
答案 1 :(得分:0)
添加配方后,您应该使用SCOPE_IDENTITY
或OUTPUT
子句来获取新的RecipeID。
答案 2 :(得分:0)
假设您使用的是SQL Server 2005或更高版本,则可以在INSERT语句中使用OUTPUT
子句。
OUTPUT子句返回有关插入行所需的任何信息。
我认为OUTPUT
子句是多用户数据库插入中最安全的机制,而不是使用SCOPE_IDENTITY
或IDENT_CURRENT
See here on how to Use OUTPUT clause in INSERT statement
另见关于OUTPUT条款优于SCOPE_IDENTITY,@ {IDENTITY对此Stackoverflow thread
的优势的非常好的解释答案 3 :(得分:0)
尝试类似
的内容调用存储过程来插入配方
SP代码用于插入配方开始 插入食谱值('','') 选择@Scope_Identity()//这将返回最后一个自动递增的值,这将是您的配方ID 插入配方结束的SP代码
现在当你有食谱ID时,你可以传递它,用食材来映射食谱。
希望这有帮助