In an attempt to be more efficient (and because I apparently have the short-term memory of a goldfish) I've developed some code to go at the end of my procedure for adding new login accounts for T_CUST_LOGIN while tending to the T_NEXT_ID table that I always seem to forget to update. The code is as follows:
UPDATE T_NEXT_IDSET T_NEXT_ID.next_id = (select max(eaddress_no) from T_EADDRESS)where T_NEXT_ID.type='AD' and (select next_id from T_NEXT_ID where type='AD') <> (select max(eaddress_no) from T_EADDRESS)
What do you think, Tessiturians? It should work, right?
BONUS ICHTHYOCENTRIC TRIVIA: The oldest recorded age of a goldfish is 41.
I’ll also add another tip. If you know the number of rows you’ll be adding ahead of time, it is much more efficient to reserve all new keys at once using the @increment parameter. So if you know you are going to add ten new rows, you can execute like this:
Declare @increment int
Select @increment = COUNT(*) From #myTempTable -- or whatever you need here
declare @next_id int
execute @next_id = dbo.AP_GET_NEXTID_function @type = 'LO', @increment = 10
select @next_id
Insert dbo.LT_TABLE(id, description, some_other_value)
Select @next_id - 1 ROW_NUMBER() Over (Order by a_unique_identifier_column),
description,
some_other_value
From #myTempTable
The next_id returned is always the first ID in the set. So if you get back a next_id of 100, you have reserved 100-109 for use. Get a count of how many rows, reserve that number of Id’s (keys), then use the Row_number() function to increment the id in a single insert select query.
+Ryan Creps
+Tessitura Network
From: Tessitura Technical Forum [mailto:forums-technical@tessituranetwork.com] On Behalf Of Steven BrasSent: Monday, December 12, 2011 5:18 PMTo: Ryan CrepsSubject: Re: [Tessitura Technical Forum] Clever Code or Foolish Functions?
Just to confirm: be sure to always use the ap_get_nextid_function; in version 11, there's a change in how nextid's are generated, and this function will be updated and any code using it will continue to function properly.
The version 11 change, in case I've piqued your curiosity: the next_id column will now contain the true "next id", ie, the one that should be assigned to the next object of a particular type. The ap_get_nextid_function will return that value, and then increment it in the t_next_id table, rather than the reverse as done in version 10 and prior.
From: Brian Graham <bounce-briangraham8283@tessituranetwork.com>Sent: 12/12/2011 3:23:39 PM
Annnnnd.. nevermind. Just found the answer. Has the word function in it, but is actually a stored procedure:
execute @next_id = dbo.AP_GET_NEXTID_function @type = 'LO', @increment = 1
This message was sent automatically to you by www.tessituranetwork.com because you subscribed to the Tessitura Technical Forum. You may reply to this message to post to the Technical forum or visit the site to search, read and post to the forums. In the interest of keeping the forum posts from becoming cluttered, we encourage you to delete previous message text from your reply before sending. Thank you!