trešdiena, 2010. gada 15. septembris

Kāda vērtība tika ielikta Identity laukā?

Daži veidi kā noskaidrot, kāda vērtība tika ievietota Identity laukā (vispār var arī netikt ievietota, ja notiek kļūda vai tiek taisīts Rollback transakcijai):

1) @@Identity- atgriež pēdējo vērtību, kas ģenerēta priekš identity lauka. Ja Tabulā, kurā ievieto datus, ir trigeris, kas raksta datus citā tabulā, tad atgriezīs tās tabulas Identity, kurā datus rakstīja pēdējā. Konekcijas ietvaros!

2) SCOPE_IDENTITY()- atgriež pēdējo ģenerēto Identity vērtību vērtību, bet neskatās, kas notiek trigeros. Konekcijas ietvaros! (šis arī tas, kas tiek izmantots, ja ģenerē .NET SqlDataAdapter- insert komandu)

3) IDENT_CURRENT('TabulasNosaukums')- pēdējo ģenerēto Identity vērtību, kas ģenerēts norādītajā tabulā. Šeit jārēķinās, ka citas konekcijas var iespaidot atgrieztos rezultātus.

4) [2011-05-17 papildināts] Ievietoto datu identifikatoru vērtību iegūšanai var izmantot arī T-SQL Output klauzu.

Labāk šis aprakstīts un ar piemēru ilustrēts šeit: http://msdn.microsoft.com/en-us/library/ms175098.aspx bet arī šeit, jo ik pa laikam šo sanāk meklēt.

Nav komentāru:

Komentāra publicēšana