【问题标题】:stored procedure to update data in multiple tables更新多个表中数据的存储过程
【发布时间】:2016-12-01 18:15:43
【问题描述】:

我是 sql 的新手。我正在通过做一个小应用程序来练习外键关系。它有 3 张桌子。一个名为 "stpersonal" 的表,其列为 stID、stname、stdateofbirth、stgender。 stID 列是标识列和主键列。由于学生包含多个教育领域,我使用了第二个名为 "steducation" 的表,其中包含字段 stID、stcollege、stgradyearsteducation 表中的stID 与stpersonal 表中的stID 有外键关系。 第三个表 "staddress" 用于包含列 stID、stAddress 的学生地址。 staddress 表中的stID 与stpersonal 表中的stID 有外键关系。 我得到了存储过程来获取所有学生的详细信息并删除和插入。但我无法弄清楚更新的存储过程。我尝试了以下方法来创建存储过程

 create procedure stupdate
    (
    @ID int,
    @stname nvarchar(50),
    @stdateofbirth nvarchar(50),
    @stgender nvarchar(50),
    @stcollege nvarchar(50),
    @stgradyear datetime,
    @stAddress nvarchar(50)
    )
    as begin
    update stpersonal
    set
    stname = @stname,
    stdateofbirth = @stdateofbirth,
    stgender = @stgender,
    stcollege = @stcollege,
    stgradyear = @stgradyear,
    stAddress = @stAddress
    where stpersonal.stID = @ID
    end  

这是我尝试过的代码。我尝试使用连接,但没有任何结果。所以我希望我能克服这个。 提前致谢

【问题讨论】:

  • 首先,您应该只标记您正在使用的 DBMS。 mysql sql 服务器。然后查看这篇文章以获得一个很好的起点。 spaghettidba.com/2015/04/24/…
  • 关于我的问题的这些信息不清楚吗?
  • 没有。我不明白问题是什么。为您的表格发布 ddl 会大大提高这一点。
  • @DotNetbeginner 是 mysql 还是 sql server?你有 ddl 给我们看吗?

标签: mysql database stored-procedures


【解决方案1】:

试试这个:

 UPDATE stpersonal
    INNER JOIN steducation ON steducation.stID = stpersonal.stID
    INNER JOIN staddress ON staddress.stID = stpersonal.stID
 SET stpersonal.stname = @stname,
    stpersonal.stdateofbirth = @stdateofbirth,
    stpersonal.stgender = @stgender,
    steducation.stcollege = @stcollege,
    steducation.stgradyear = @stgradyear,
    staddress.stAddress = @stAddress
 WHERE stpersonal.stID = @ID

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多