用于更新多个表

时间:2016-12-01 18:15:44

标签: mysql database stored-procedures

我是sql的新手。我通过做一个小应用程序来练习外键关系。它有3个表。一个名为 " stpersonal" 的表格,其中cloumns为 stID,stname,stdateofbirth,stgender 。 stID列是标识列和主键列。由于学生在教育中包含多个字段,我使用名为 " steducation" 的第二个表格,其中字段为 stID,stcollege,stgradyear 。  steducation表中的 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  

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

1 个答案:

答案 0 :(得分:0)

试试这个:

 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