The below query not checking update statement always insert only , where i am doing the wrong in the below code.
ALTER Procedure [dbo].[UpdateData] @JobOrder varchar(50) AS BEGIN --DECLARE @UPDATING INT IF EXISTS(SELECT 1 FROM [ADDLINKSERVER].[DATABASE].[dbo].[TABLE] WHERE JobOrder=@JobOrder ORDER BY JobStatus DESC) BEGIN UPDATE [ADDLINKSERVER].[DATABASE].[dbo].[TABLE] SET RepairComment = (SELECT Top 1 Status_Comment FROM LOCALDB.dbo.LOCALTABLE Where REPAIRNO=@JobOrder Order By TRACKINGID desc), Amount = (SELECT Top 1 LABOR_AMT+PARTS_AMT As Amount FROM LOCALDB.dbo.LOCALTABLE Where REPAIRNO=@JobOrder Order By TRACKINGID desc), JobStatus = (SELECT Top 1 Job_Status FROM LOCALDB.dbo.LOCALTABLE Where REPAIRNO=@JobOrder Order By TRACKINGID desc) WHERE JobOrder=@JobOrder END ELSE BEGIN INSERT INTO [ADDLINKSERVER].[DATABASE].[dbo].[TABLE](JobOrder,RepairComment,JobStatus,Branch,Customer, Contact,Technician,ReceiptDate,Complaint,Amount,Warranty,ServiceType) ( Select Top 1 JT.REPAIRNO,JT.StatusComment,JT.JobStatus, SJ.MAINSC,SJ.CUSTOMER + ' ' + SJ.CUSTOMERLAST AS FullName,SJ.Tel,SJ.ENGINEER,SJ.RECEIPTDATE, SJ.DEFECTDESC,SJ.LABOR_AMT+PARTS_AMT As Amount,SJ.WARRANTY,SJ.SERVICETYPE FROM LOCALDB1 SJ INNER JOIN LOCALDB2 JT ON JT.REPAIRNO=SJ.REPAIRNO WHERE JT.REPAIRNO=SJ.REPAIRNO) END END trying to update the data to remoteserver from localdb.
JobOrder? If you runSELECT COUNT(*) FROM Table WHERE JobOrder =xbefore and after you run the proc (for x), are the rows the same or different?IFat all and that might be easier to debug. You basically put add to yourwhereon your insert and update like this:WHERE JT.REPAIRNO=SJ.REPAIRNO AND NOT EXISTS (SELECT 1 FROM [ADDLINKSERVER].[DATABASE].[dbo].[TABLE] WHERE JobOrder=@JobOrder)@JobOrderat all ad your inserting it across. I'm guessing you need to changeWHERE JT.REPAIRNO=SJ.REPAIRNOtoWHERE JT.REPAIRNO = @JobOrderbut I can't be sure because I don't know what your tables look like and I don't know what you're trying to do