0

ストアド プロシージャを使用してテーブルにデータを挿入する際に問題があります。私はこの手順を使用する必要があり、それらは他のプログラマーによって書かれています。

この手順で、注文をデータベースに挿入できます。手順にいくつかの属性を提供しましたが、すべて問題ありません。注文テーブルには、貸衣装 ID の列があります。

注文テーブルに新しい行を挿入すると、配送先住所が顧客テーブルのデータで上書きされます。手順はこのようなものを作りません。注文テーブルに手動で挿入すると、配送先住所が受け入れられます。

新しい注文を挿入するときに顧客情報を自動的に取得する隠し手順がある可能性はありますか?

USE [EHS]
GO
/****** Object:  StoredProcedure [dbo].[SP_INTERNETAUFTRAGE]    Script Date: 10/07/2013 12:21:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[SP_INTERNETAUFTRAGE]
@Akcija int = 1,
/*
Many more attributes
*/      
@p6 money = NULL,
@rezultat int = 0 OUTPUT

AS
BEGIN
SET NOCOUNT ON;
DECLARE @brojac int
SET @brojac = 0
DECLARE @TypName nvarchar(30)
DECLARE @firmC int
DECLARE @gespert bit
DECLARE @letzeAufNr int
DECLARE @letzeRechNr int
SET @gespert=0
SELECT @TypName = [Name], @letzeAufNr = letzteAufNr, @gespert = gesperrt FROM dbo.T_letzteAufNr WHERE Typ=@Typ AND Jahr=Year(GETDATE())

SET @firmC=(@Typ-1)/10
IF (@firmC=3)
BEGIN
    SET @firmC=4
END
IF (@Akcija=1)
   BEGIN
    IF (@gespert=0)
            BEGIN
                DECLARE @AufNrNew nvarchar(10)
                DECLARE @AufNrN int
                SET @AufNrNew =CAST(@Typ AS nvarchar(2)) + Right(CAST(Year(GETDATE()) AS nvarchar(4)), 2) + Right('0000' + CAST((@letzeAufNr + 1) as nvarchar(10)), 5) 
                SET @AufNrN = CAST(@AufNrNew AS int)

                PRINT @RechOrt

                INSERT INTO dbo.T_Internetaufträge (rows) VALUES 
                                       (values)

                INSERT INTO dbo.T_Internetaufträge_Historie (rows) VALUES 
                                       (values)

                UPDATE dbo.T_letzteAufNr SET letzteAufNr=(@letzeAufNr+1) WHERE Typ=@Typ AND Jahr=Year(GETDATE())
            -- UPDATE dbo.T_letzteAufNr SET gesperrt=0 WHERE Typ=@Typ AND Jahr=Year(GETDATE()) 


               UPDATE T_Kunden SET FirmaCust=FirmaCust |@firmC WHERE KuNr=@KuNr


                SET @rezultat=@AufNrN
                return @rezultat
    END ELSE BEGIN
            SET @rezultat=-3 /*GESPERT*/
            return -3
        END
   END ELSE BEGIN 
      PRINT 'UPDATE'
      UPDATE dbo.T_Internetaufträge SET rows=values /* many more */ WHERE AufNr = @AufNr
      INSERT INTO dbo.T_Internetaufträge_Historie (rows) VALUES 
                                       (values)
END
SET @rezultat = 0
 return 0
END
4

1 に答える 1

0

ついに別のテーブルでトリガーを見つけました。

于 2013-10-08T09:31:15.307 に答える