在SQL Server中更新多个表

时间:2017-08-04 19:10:40

标签: sql sql-server tsql

我有两张桌子:

   Projects: ID - ProjectName - Areas - PaymentSystem- etc 
   project details : DetailsID - ProjectDetailName - ProjectDetailImage -ProjectID

我写了这个查询来更新这两个表,但是当我执行这个程序时我有错误信息

  

程序Update_Project_Detail,第35行   列名称“ID”无效。

  create proc Update_Project_Detail

   @projectname nvarchar(MAX),
   @area nvarchar(MAX),
   @paymentsystem nvarchar(MAX),
   @receivedDate date,
   @propertyClassification nvarchar(MAX),
   @projectImage nvarchar(MAX),
   @ProjectDetailName nvarchar(MAX),
    @ProjectDetailImage nvarchar(MAX),
    @projectid int

     as
     UPDATE Projects

       SET

       ProjectName =  @projectname,
       Areas = @area,
       PaymentSystem = @paymentsystem,
       ReceivedDate = @receivedDate,
       PropertyClassification = @propertyClassification,
       ProjectImage = @projectImage

      where 
       ID = @projectid

     UPDATE ProjectDetails

     SET 
      ProjectDetailName = @ProjectDetailName,
      ProjectDetailImage = @ProjectDetailImage

      where 
      ID = @projectid

2 个答案:

答案 0 :(得分:3)

错误陈述中的“LINE 35”会引导您进入。倒计时到第35行。您将看到这是指您最后的where子句:“ID = @projectid”。

错误告诉您此列不存在。由于这是ProjectDetails表,我想您可能已将此列称为“ProjectID”而不是“ID”,这是您在Projects表中使用的。

因此,可能会将WHERE子句更改为 ProjectID = @projectid

答案 1 :(得分:2)

使用了无效的列,请参阅下面的正确更新语句:

UPDATE ProjectDetails
SET 
ProjectDetailName = @ProjectDetailName,
ProjectDetailImage = @ProjectDetailImage
where ProjectID= @projectid