首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据一个表中的更改更新另一个表中的列

问根据一个表中的更改更新另一个表中的列
EN

Stack Overflow用户
提问于 2013-03-02 05:27:26
回答 1查看 1.1K关注 0票数 0

请原谅我,因为我是数据库新手。我有一个食谱表单,用户可以在其中输入几种配料和食谱名称。有了这个表单,我就有了以下表格: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,但似乎都不能正常工作。

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2013-03-02 05:39:40

通常,您需要从第一次插入获取新的recipeID,然后在将其插入到配料表中时使用它。

您是否有权访问从插入到配方表中的新插入的recipeID?你是怎么做这个插入的?

下面是一个示例存储过程,它进入数据库进行插入/更新并返回id:

代码语言:javascript
复制
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
    )
    ;
END
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15167162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档