SCOPE_IDENTITY() vs. @@IDENTITY

Je kent dat wel, in de Sqlserver database heb je een tabel met een autonummer. Bij het updaten en deleten zijn er geen problemen, maar bij het inserten wel. Hoe krijg je het gegenereerde nummer terug? Veelal wordt dan @@IDENTITY gebruikt. In dit blog item staat een aardige uitleg tussen de verschillen van @@IDENTITY en SCOPE_IDENTITY().


http://davidhayden.com/blog/dave/archive/2006/01/17/2736.aspx


While reading Beginning ASP.NET 2.0 E-Commerce in C# 2005 From Novice to Professional, I noticed the use of @@IDENTITY to retrieve the identity of the most recently added row in a table.  Although this is one of those common practices in SQL Server 7, which does not have a SCOPE_IDENTITY() function, it is no longer the accepted way to get the identity of the most recently added row in a table in SQL Server 2000 and SQL Server 2005.


@@IDENTITY returns the most recently created identity for your current connection, not necessarily the identity for the recently added row in a table.  You could have a situation where there is a trigger that inserts a new record in a Logs Table, for example, when your Stored Procedure or INSERT SQL Statement inserts a record in the Orders Table.  If you use @@IDENTITY to retrieve the identity of the new order, you will actually get the identity of the record added into the Log Table and not the Orders Table, which will create a nasty, nasty bug in your data access layer.


To avoid the potential problems associated with someone adding a trigger later on, always use SCOPE_IDENTITY() to return the identity of the recently added row in your INSERT SQL Statement or Stored Procedure.

Visual Studio 2005 really Rocks!

Zojuist kwam ik achter een hele gave feature in Visual Studio 2005.

Heb je weleens meegemaakt in VS 2003 dat je in een Windows Applicatie een control op een Form een andere naam gaf? Bijvoorbeeld: textBox1 wordt txtName.

Om dan geen compiler fouten te krijgen, moest je alle code van het scherm af om daar ook de rename uit te voeren. Of je gokte natuurlijk op de compilerfouten om een pointer naar de regel in de code te krijgen.

Dat renamen is in VS 2005 niet meer nodig. Je hoeft alleen het control van naam te wijzigen en alle aanroepen in de code zullen mee veranderen.

Wizzard in C# 2.0

Ken je de situatie dat je eigenlijk in je applicatie een soort van Wizzard wilt hebben? Zo eentje, maar dan zonder de welkoms pagina, de license pagina etc? Gewoon omdat je je gebruiker wilt helpen bij het maken van de juiste keuze of hem/haar wilt begeleiden in het proces?
Een dergelijke versie kon ik niet vinden op het net. Daarom heb ik hem maar zelf gebouwd. Ik heb er wel een Welkoms pagina en License pagina aan toe gevoegd, maar meer om de mogelijkheden te testen van mijn Wizzard page. Primair zou de Wizzard begeleiding van de gebruikers moeten zijn.
Ik ben nog bezig om de Code iets op te poetsen. Maar als je interesse hebt, dan hoor ik het graag.