【问题标题】:How to Update one column of Table B when inserting in Table A in SQL在SQL中插入表A时如何更新表B的一列
【发布时间】:2020-03-06 09:27:05
【问题描述】:

我有两个表 Tbl_Appointment 和 Tbl_AppointmentRequest。 Tbl_AppointmentRequest 中的数据来自移动应用程序,在 UI 中有一个按钮批准,单击它会用 Tbl_AppointmentRequest 的数据填充文本框、下拉列表等,然后有一个称为提交的按钮,当我提交它时,它会将数据插入 Tbl_Appointment 并插入时Tbl_AppointmentRequest 中有一个列 isappconfirm 应该更新为 1。 以下是我的查询,我可以插入但无法将 isappconfirm 列更新为 1。

ALTER Proc [dbo].[Sp_Save_Appointment]
(@AppointmentID nvarchar(50),
@PatientID nvarchar(50),
@PatientName nvarchar(500),
--@PackageID nvarchar(50),
@PackageName nvarchar(500),
@Date nvarchar(50),
@Time nvarchar(50),
@DoctorID nvarchar(50),
@DoctorName nvarchar(500),
@HospitalName nvarchar(500),
@Address nvarchar(500),
@Price nvarchar(500),
@Latitude nvarchar(50),
@Longitude nvarchar(50),
@EscortName nvarchar(500),
@Createdby nvarchar(50),
@CreatedbyName nvarchar(500),
@Modifiedby nvarchar(50),
@ModifiedbyName nvarchar(500))
as begin
if(@AppointmentID='')
begin
Insert into Tbl_Appointment(PatientID,PatientName,PackageName,Date,Time,DoctorID,DoctorName,HospitalName,
Address,Price,Latitude,Longitude,EscortName,Createdby,CreatedbyName,CreatedDate)
values(@PatientID,(Select Top(1)PatientName from Tbl_Patientinfo where PatientID=@PatientID),
@PackageName,
@Date,@Time,@DoctorID,(Select Top(1) DoctorName from Tbl_DoctorInfo where DoctorID=@DoctorID),
@HospitalName,@Address,@Price,@Latitude,@Longitude,@EscortName,
@Createdby,(Select Top(1)UserName from Tbl_UserInfo where UserId=@Createdby),
convert(datetime,SWITCHOFFSET(SYSDATETIMEOFFSET(), '+05:30')))
Declare @id nvarchar(20) set @id=@@identity
select @id as message
end

else
begin
Update Tbl_Appointment Set PatientID=@PatientID,@PatientName=(Select Top(1)PatientName from Tbl_Patientinfo where PatientID=@PatientID),
PackageName=@PackageName,
Date=@Date,Time=@Time,DoctorID=@DoctorID,DoctorName=(Select Top(1) DoctorName from Tbl_DoctorInfo where DoctorID=@DoctorID),
HospitalName=@HospitalName,Address=@Address,Price=@Price,Latitude=@Latitude,Longitude=@Longitude,EscortName=@EscortName,
Modifiedby=@Modifiedby,ModifiedbyName=@ModifiedbyName,ModifiedDate=convert(datetime,SWITCHOFFSET(SYSDATETIMEOFFSET(), '+05:30'))
Where AppointmentID=@AppointmentID
Select '1' as message

declare @isappconfirm nvarchar(50)
set @isappconfirm=(select top(1) isappconfirm from Tbl_AppointmentRequest where AppointmentReqID=@AppointmentID order by AppointmentReqID desc)
if(@isappconfirm='')
begin
update Tbl_AppointmentRequest set isappconfirm='1' where AppointmentReqID=@AppointmentID
end


end
end

【问题讨论】:

    标签: sql sql-server asp.net-mvc


    【解决方案1】:

    您正在 Tbl_Appointment 中插入数据。

    所以,您将获得在 Tbl_AppointmentRequest 中不可用的新身份密钥(new AppointmentID)。 这就是为什么这不起作用。

    为此,您还必须在 Tbl_AppointmentRequest 上添加与 inserted AppointmentID 相关的 new entry 并设置 isappconfirm=1强>。 因此,新条目将在 Tbl_AppointmentRequest 中添加 isappconfirm=1 插入。 就是这样。

    【讨论】:

    • @murtuza 请尝试上述查询。我更新了那个查询。
    • @murtuza Tbl_AppointmentRequest 中是否有相关 AppointmentID 的数据?请检查..
    • Tbl_AppointmentRequest 中的数据来自移动应用程序,然后来自数据库,我将其发送到 UI 字段,然后当我提交时应将其插入到 Tbl_Appointment 中,成功插入时应将 isappconfirm 列更新为 1,但是它只是被插入而不更新 isappconfirm 列@kgajjar20
    • AppointmentID在插入数据后生成@kgajjar20
    • @murtuza 您在 Tbl_Appointment 中插入数据。因此,您将获得 Tbl_AppointmentRequest 中不可用的新身份密钥(新 AppointmentID)。这就是为什么这不起作用。为此,您还必须在 Tbl_AppointmentRequest 上添加与插入的 AppointmentID 相关的新条目并设置 isappconfirm=1。因此,新条目将在 Tbl_AppointmentRequest 中添加,其中 isappconfirm=1 在插入时添加。就是这样。
    【解决方案2】:

    我很惊讶人们为什么无法回答如此简单的问题,并在他们无法回答并为错误答案投票时指出和反对投票。

    这很简单只需传递@AppointmentReqID 并在声明@isappconfirm 然后在哪里条件AppointmentReqID=@AppointmentReqID

    ALTER Proc [dbo].[Sp_Save_AppointmentRequest]
    (@AppointmentID nvarchar(50),
    @PatientID nvarchar(50),
    @PatientName nvarchar(500),
    @PackageName nvarchar(500),
    @Date nvarchar(50),
    @Time nvarchar(50),
    @DoctorID nvarchar(50),
    @DoctorName nvarchar(500),
    @HospitalName nvarchar(500),
    @Address nvarchar(500),
    @Price nvarchar(500),
    @Latitude nvarchar(50),
    @Longitude nvarchar(50),
    @EscortName nvarchar(500),
    @Createdby nvarchar(50),
    @CreatedbyName nvarchar(500),
    @Modifiedby nvarchar(50),
    @ModifiedbyName nvarchar(500),
    @AppointmentReqID nvarchar(50))
    as begin
    if(@AppointmentID='')
    begin
    
    
    Insert into Tbl_Appointment(PatientID,PatientName,PackageName,Date,Time,DoctorID,DoctorName,HospitalName,
    Address,Price,Latitude,Longitude,EscortName,Createdby,CreatedbyName,CreatedDate)
    values(@PatientID,(Select Top(1)PatientName from Tbl_Patientinfo where PatientID=@PatientID),
    @PackageName,
    @Date,@Time,@DoctorID,(Select Top(1) DoctorName from Tbl_DoctorInfo where DoctorID=@DoctorID),
    @HospitalName,@Address,@Price,@Latitude,@Longitude,@EscortName,
    @Createdby,(Select Top(1)UserName from Tbl_UserInfo where UserId=@Createdby),
    convert(datetime,SWITCHOFFSET(SYSDATETIMEOFFSET(), '+05:30')))
    Declare @id nvarchar(20) set @id=@@identity
    
    
    
    declare @isappconfirm nvarchar(50)
    set @isappconfirm=(select top(1) isappconfirm from Tbl_AppointmentRequest where AppointmentReqID=@AppointmentReqID order by AppointmentReqID desc)
    if(@isappconfirm='NULL')
    begin
    update Tbl_AppointmentRequest set isappconfirm='1' where AppointmentReqID=@AppointmentReqID
    end
    select @id as message
    end
    
    else
    begin
    
    Update Tbl_Appointment Set PatientID=@PatientID,@PatientName=(Select Top(1)PatientName from Tbl_Patientinfo where PatientID=@PatientID),
    PackageName=@PackageName,
    Date=@Date,Time=@Time,DoctorID=@DoctorID,DoctorName=(Select Top(1) DoctorName from Tbl_DoctorInfo where DoctorID=@DoctorID),
    HospitalName=@HospitalName,Address=@Address,Price=@Price,Latitude=@Latitude,Longitude=@Longitude,EscortName=@EscortName,
    Modifiedby=@Modifiedby,ModifiedbyName=@ModifiedbyName,ModifiedDate=convert(datetime,SWITCHOFFSET(SYSDATETIMEOFFSET(), '+05:30'))
    Where AppointmentID=@AppointmentID
    Select '1' as message
    
    
    end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 2022-12-16
      • 2015-05-12
      相关资源
      最近更新 更多