当前位置: 代码迷 >> Sql Server >> 整个行更新简略方式
  详细解决方案

整个行更新简略方式

热度:23   发布时间:2016-04-24 09:19:33.0
整个行更新简单方式?

USE [OneFactory]
GO
/****** Object:  Trigger [dbo].[trg_Update]    Script Date: 03/07/2015 08:54:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date: 2015-03-08
-- Description: <Description,,>
-- =============================================
ALTER TRIGGER  [dbo].[trg_Update]
   ON  [dbo].[tbCCData]
   AFTER UPDATE
AS 
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

    -- Insert statements for trigger here
    
    declare @ccflag nvarchar(50)
    select @ccflag =ccflag from inserted
    
UPDATE [OneFactory].[dbo].[tbCCData_R]
   SET
      [HTSHR] = inserted.HTSHR
      ,[RKRQ] = inserted.RKRQ
      ,[MWMao] =inserted.MWMao
      ,[TongGuan] = inserted.TongGuan
      ,[ChuanMing] = inserted.ChuanMing
      ,[HangCi] = inserted.HangCi
      ,[PinMing] = inserted.PinMing
      ,[ChangDi] = inserted.ChangDi
      ,[YTDD] = inserted.YTDD
      ,[RKDun] = inserted.RKDun
      ,[RKYKD] = inserted.RKYKD
      ,[FHDun] = inserted.FHDun
      ,[FCYKD] = inserted.FCYKD
      ,[DCKC] = inserted.DCKC
      ,[CKYKD] = inserted.CKYKD
      ,[CKYKFlag] =inserted.CKYKFlag
      ,[ZHRD] = inserted.ZHRD
      ,[YDSHR] = inserted.YDSHR
      ,[Memos] = inserted.Memos
      ,[CCOK] = inserted.CCOK
      ,[CCEnd] = inserted.CCEnd
 WHERE tbCCData_R.[CCFLag] = @ccflag
END



这样写是错的, 怎么写才能简单呢, 更新本行,除了 tbCCData_R.ID  不需要更新外
------解决思路----------------------
更新没有简便的方式,可以考虑动态执行
------解决思路----------------------
UPDATE [OneFactory].[dbo].[tbCCData_R]
   SET
      [HTSHR] = inserted.HTSHR

这个写法,是因为你用到了 inserted 中的数据,但是 from 中却没有该表
  相关解决方案