July 8, 2007 at 9:40 pm
Very useful hint
Regards
July 8, 2007 at 11:12 pm
July 8, 2007 at 11:37 pm
Very valuable information to me. Too bad that te conclusion is wrong! There really is a need to perform modifications wherever @@identity or scope_identity() is used because they are not reliable:
So, my conclusion would be that it really is nescessary to rewrite code whenever you need the newly assigned identity.
Regards,
Hans van Dam
July 9, 2007 at 12:00 am
Comments posted to this topic are about the item The OUTPUT Command
My Blog:
July 9, 2007 at 12:03 am
Yes indeed. Very valuable feature. Performance can be greatly enhanced by this, where triggers may be replaced. Those wondering about the missing spaces...
In the first example block, SELECTSCOPE_IDENTITY() should be SELECT SCOPE_IDENTITY(). In the last example block where the delete statements are WHEREID = should be WHERE ID =
July 9, 2007 at 5:28 am
Useful tip, but I think the editor should have done more editing (and proofreading.)
July 9, 2007 at 5:36 am
Missing some key information such as when you cannot use it. Will not work if there is a trigger on the table, or if it is involved in foreign key, or has check constraints. All of those are pretty common.
July 9, 2007 at 5:37 am
sorry for the query errors
My Blog:
July 9, 2007 at 6:26 am
Jimi, that's not quite correct. Here's what it says in BOL:
output_table cannot:
You can use it on any table regardless of configuration, it's only the output table where you're landing the results that has restrictions.
The output clause is one of the really nice improvements in 2005. I've seen all too many instances where developers were essentially inserting an alternate primary key so that they could insert multiple rows at once and still get the keys back. If they had used scope_identity() they would have been forced to insert the records one at a time which is not great for performance.
Essentially the output clause exposes the logical inserted and deleted tables that were previously only visible within the trigger execution.
July 9, 2007 at 7:25 am
Andy,
is it possible you to do following changes in the article
SELECTSCOPE_IDENTITY() should be SELECT SCOPE_IDENTITY() in first example block.
In the last example block where the delete statements are WHEREID = should be WHERE ID
My Blog:
July 9, 2007 at 7:29 am
"Select Scope_Identity() as LastInsertID"
Of course the real-world use of scope_identity() is to set a variable or an output parameter, since only a hack DBA would ever attempt to copy/paste identity values in an interactive session - right?
July 9, 2007 at 7:32 am
Dinesh, I no longer have the power! But I'll forward the link to Steve for you and he will make the correction, but he's headed to the UK this week so may take a day or two.
July 9, 2007 at 7:54 am
Typo's fixed.
July 9, 2007 at 1:02 pm
I wondered the same thing and came up with the following:
DECLARE @Output table( ID int, Code VARCHAR(25), Name VARCHAR(50), Salary Numeric(10 , 2))
INSERT INTO TempTable ( Code , Name, Salary)
OUTPUT Inserted.ID
, Inserted.Code
, Inserted.Name
, Inserted.Salary
INTO @Output
VALUES( 'A005' , 'Jennifer', 500 )
It would have been helpful if OUTPUT INTO were discussed in the article. Otherwise, a great tip!
July 10, 2007 at 12:55 am
Its wonderful !
Viewing 15 posts - 1 through 15 (of 25 total)
You must be logged in to reply to this topic. Login to reply