none
SQL SERVER LinkedServer Triger Hatası RRS feed

  • Soru

  • USE [SYNC]
    GO

    /****** Object:  Trigger [dbo].[StokHareketleri]    Script Date: 07/04/2014 09:42:05 ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    -- =============================================
    -- Author:        <Author,,Name>
    -- Create date: <Create Date,,>
    -- Description:    <Description,,>
    -- =============================================
    CREATE TRIGGER [dbo].[StokHareketleri]
       ON  [dbo].[SYNC_TABLE]
       AFTER INSERT
    AS


    BEGIN
        -- SET NOCOUNT ON added to prevent extra result sets from
        -- interfering with SELECT statements.
        SET NOCOUNT ON;

    DECLARE @id int;
    DECLARE @logical_ref nvarchar(20);
    SELECT @logical_ref=logical_ref,@id=id from inserted

    DECLARE @depo nvarchar(3);
    DECLARE @stokID varchar(20);
    DECLARE @kalan int;




    SET @stokID= dbo.ufStokID(@logical_ref);
    SET @depo= dbo.ufDepo(@logical_ref);

    if(len(@depo)<=0 or LEFT(@depo,1)!='d') return;

    select  @kalan=isnull(sum(lGirisMiktar1 - lCikisMiktar1),0) from GOKCE.DBO.tbStokFisiDetayi where sDepo=@depo and nStokId =@stokID;



    DECLARE @sayi int;
    DECLARE @sorgu nvarchar(4000), @TSQL nvarchar(4000), @LinkedServer nvarchar(4000)
    SET @LinkedServer = 'TEST'
    SET @sorgu = 'SELECT @sayi=count(*) FROM OPENQUERY('+ @LinkedServer + ','''
    SET @TSQL = 'select 1 from stoktoplam where stokId="'+@StokId+'" and depo="'+@depo+'"'')'
    SET @TSQL=@sorgu+@TSQL;
    EXECUTE sp_executesql @TSQL,N'@sayi int out',@sayi out;

    IF (@sayi>0)
    BEGIN
    set @sorgu='update stoktoplam set kalanmiktar='+convert(varchar(10),@kalan)+' where stokId="'+@stokID+'" and depo="'+@Depo+'"';
    EXECUTE ( @sorgu) AT TEST;
    END
    ELSE
    BEGIN
    set @sorgu='insert into stoktoplam (stokid,depo,kalanmiktar) values ("'+@stokId+'","'+@Depo+'",'+convert(varchar(10),@kalan)+')';
    EXECUTE ( @sorgu) AT TEST;
    end;

    update SYNC_TABLE set status=1 where id=@id;

    END

    GO

    (Bu şekilde yazmış olduğum triger sorunsuz çalışıyor Fakat FAKAT MYSQL dururda yada bir sorun olursa o zaman mssql server da o tabloda yapılan işlemler eksik kalıyor. bu sorunu ne yaptıysam aşamadım )


    4 Temmuz 2014 Cuma 07:13

Tüm Yanıtlar