• arturmariojr (2/24/2011)


    But now you will have as many tables as you have keys in original table and, for each increment on some key, you will add a new register in the key-table... if you have thousands of increments by day, you will have thousands of new registers and only the last one is neccessary.

    May be the solution could be:

    CREATE PROCEDURE [dbo].[USP_Get_Value_For_Key]

    (

    @key NVARCHAR(50),

    @value INT OUTPUT

    )

    AS

    BEGIN

    begin transaction

    SELECT @value = 0

    UPDATE tbl_kvp SET column_value += 1 WHERE column_key = @key

    SELECT @value = column_value FROM tbl_kvp WHERE column_key = @key

    commit tran

    END

    The outer procedures don't need to implement the transaction for get the last id.

    I like newbies 🙂

    You can always correct their sql statments 🙂

    ...

    UPDATE tbl_kvp SET

    @value = column_value+1,

    column_value = @value

    WHERE column_key = @key

    ...

    (that avoids need of "begin transaction")