请原谅我,因为我是数据库新手。我有一个食谱表单,用户可以在其中输入几种配料和食谱名称。有了这个表单,我就有了以下表格:Recipe{recipeID, recipeName} RecipeIngredient{recipeID,ingredientID,measurement} Ingredient{ingredientID, ingredientName}
RecipeIngredients充当一对多关系的中间表(一个配方对应多个配料)。我将recipeID作为该表中的外键分配给配方表中的主键recipeID。我以为外键会根据主键更新进行更新,但是如果我插入到配方表中,RecipeIngredients表什么也不做。
食谱和配料被自动分配ID。我正在尝试将一个食谱的ID链接到每个配料的自动分配ID。例如,如果用户输入8种配料,则会为每种配料分配一个唯一的ID。我需要RecipeIngredients表来复制这些ID,并将它们与自动分配的配方ID相关联。
我已经尝试了几种基于其他表中的更改来更新列的解决方案。我尝试过修改this MySQL update语句,也尝试过修改this SQL server,但似乎都不能正常工作。
有什么建议吗?
发布于 2013-03-02 05:39:40
通常,您需要从第一次插入获取新的recipeID,然后在将其插入到配料表中时使用它。
您是否有权访问从插入到配方表中的新插入的recipeID?你是怎么做这个插入的?
下面是一个示例存储过程,它进入数据库进行插入/更新并返回id:
CREATE PROCEDURE [dbo].[spAlertCategoryInsUpd]
@AlertCategoryID int,
@AlertID int,
@CategoryID int,
@ScreenSortOrder int
AS
SET NOCOUNT ON
IF EXISTS(SELECT [AlertCategoryID] FROM [dbo].[AlertCategories] WHERE [AlertCategoryID] = @AlertCategoryID)
BEGIN
UPDATE [dbo].[AlertCategories] SET
[AlertID] = @AlertID,
[CategoryID] = @CategoryID,
[ScreenSortOrder] = @ScreenSortOrder
WHERE
[AlertCategoryID] = @AlertCategoryID
SELECT @AlertCategoryID as AlertCategoryID;
END
ELSE
BEGIN
INSERT INTO [dbo].[AlertCategories] (
[AlertID],
[CategoryID],
[ScreenSortOrder]
)
OUTPUT INSERTED.AlertCategoryID AS AlertCategoryID
VALUES (
@AlertID,
@CategoryID,
@ScreenSortOrder
)
;
ENDhttps://stackoverflow.com/questions/15167162
复制相似问题