2017-12-02 14 views
1

ストアドプロシージャを使用して複数の場所を1人の顧客に追加する方法に問題があります。以下は、私のテーブルです、私は私が一人の顧客に複数の場所を追加することができます助けるために、インデックスを使用していますが、あまりにもする必要があり、私ストアドプロシージャを使用して複数の場所を1人の顧客に追加する方法は?

SELECT @intLocationIndex = MAX(intLocationIndex) +1 

CREATE TABLE TCustomer 
(
    intCustomerID INTEGER NOT NULL, 
    strCustomerName VARCHAR(50) NOT NULL, 
    strAddress VARCHAR(50) NOT NULL, 

    CONSTRAINT TCustomer_PK PRIMARY KEY (intCustomerID) 
) 

CREATE TABLE TCustomerLocation 
(
    intLocationID INTEGER NOT NULL, 
    intLocationIndex INTEGER NOT NULL, 
    intCustomerID INTEGER NOT NULL, 

    CONSTRAINT TCustomerLocation_PK 
     PRIMARY KEY(intLocationID, intLocationIndex) 
) 

CREATE TABLE TLocation 
(
    intLocationID INTEGER NOT NULL, 
    strLocationName VARCHAR(50) NOT NULL, 
    strLocationAddress VARCHAR(50) NOT NULL, 
    strLocationCity VARCHAR(50) NOT NULL, 
    CONSTRAINT TLocation_PK PRIMARY KEY(intLocationID) 
) 

CREATE PROCEDURE uspAddCustomerLocation 
    @strCustomerName VARCHAR(50), 
    @strAddress VARCHAR(50), 
    @strLocationName VARCHAR(50), 
    @strLocationAddress VARCHAR(50), 
    @strLocationCity VARCHAR(50) 
AS 

BEGIN TRANSACTION 
SET XACT_ABORT ON 

DECLARE @intCustomerID INTEGER 

SELECT @intCustomerID = MAX(intCustomerID) + 1 
FROM TCustomer (TABLOCKX) -- LOCK TABLE UNTIL THE END OF TRANSACTION 

SELECT @intCustomerID = COALESCE(@intCustomerID , 1) 

    INSERT INTO TCustomer (intCustomerID, strCustomerName , strAddress) 
    VALUES(@intCustomerID ,@strCustomerName ,@strAddress) 

DECLARE @intLocationID INTEGER 
DECLARE @intLocationIndex INTEGER 

SELECT @intLocationID = MAX(intLocationID) + 1 
FROM TLocation (TABLOCKX) -- LOCK TABLE UNTIL THEEND OF TRANSACTION 


COMMIT TRANSACTION 

GO 
+0

となると思います。手順コードはベンダー固有のものです** ** - mysql、postgresql、sql-serverのいずれを使用するかを指定するタグを付けてください。 、 'oracle'または' db2' - あるいは全く別のものです。 –

+0

私は最終的に 'TABLOCKX'ヒントから 'sql-server'を推測するつもりです –

答えて

0

私はDBAではありませんが、これらのIDフィールドはIDENTITYフィールドでした。とにかく質問の選択はSELECT @intLocationIndex = MAX(intLocationIndex) +1 Where intCustomerID = @intCustomerID

関連する問題