Avots: Internets Autors: Nezināms
- Izveidot datu bāzes un tabulas
izveidot datu bāzi MyDataBase
izmantot MyDataBase
Izveidot tabulu Mytable
id int identitāte(1,1),
Vārds, uzvārds Varchar(20)
)
--Izpildiet šo SQL, lai uzzinātu pašpieauguma kolonnas vērtību, kas atbilst tikko ievietotajam ierakstam
ievietot mytable values('Li Si')
Atlasiet @@identity
2) Par triju metožu salīdzinājumu
SQL Server 2000 ir trīs līdzīgi līdzekļi: SCOPE_IDENTITY, IDENT_CURRENT un @@IDENTITY, kas visi atgriež kolonnā IDENTITY ievietotās vērtības.
IDENT_CURRENT Atgriež pēdējo identifikācijas vērtību, kas ģenerēta konkrētai tabulai jebkurā sesijā un tvērumā. IDENT_CURRENT Nav ierobežots pēc tvēruma un sesijas, bet gan pēc noteiktas tabulas. IDENT_CURRENT Atgriež vērtību, kas ģenerēta konkrētai tabulai jebkurā sesijā.
@@IDENTITY Atgriež pēdējo identifikācijas vērtību, kas ģenerēta jebkurai tabulai visos pašreizējās sesijas tvērumos.
SCOPE_IDENTITY Atgriež pēdējo identificēto vērtību, kas ģenerēta pašreizējai sesijai un jebkurai tabulai pašreizējā tvērumā
SCOPE_IDENTITY un @@IDENTITY atgriež pēdējo identifikācijas vērtību, kas tika ģenerēta jebkurā tabulā pašreizējā sesijā. Tomēr SCOPE_IDENTITY atgriež tikai pašreizējā tvērumā ievietotās vērtības; @@IDENTITY Neaprobežojas tikai ar konkrētu darbības jomu.
Piemēram, ir divas tabulas, T1 un T2, kurās ir definēts INSERT trigeris. Kad rinda tiek ievietota T1, tiek aktivizēts sprūds un rinda tiek ievietota T2. Šis piemērs ilustrē divas darbības jomas: vienu uz T1 un otru uz T2 trigera rezultātā.
Pieņemot, ka gan T1, gan T2 ir kolonnas IDENTITY, @@IDENTITY un SCOPE_IDENTITY atgriezīs dažādas vērtības T1 priekšraksta INSERT beigās.
@@IDENTITY Atgriež pēdējo kolonnas IDENTITY vērtību, kas ievietota jebkurā pašreizējās sesijas tvērumā, kas ir T2 ievietotā vērtība.
SCOPE_IDENTITY() atgriež IDENTITY vērtību, kas ievietota T1, kas ir pēdējā INSERT, kas notika tajā pašā tvērumā. Ja funkcija SCOPE_IDENTITY() tiek izsaukta pirms ievietošanas priekšraksta identitātes kolonnā tiek veikts tvērumā, funkcija atgriež vērtību NULL.
Vērtības, ko atgriež IDENT_CURRENT('T1') un IDENT_CURRENT('T2'), ir attiecīgi pēdējās pašpalielinošās vērtības abās tabulās.
ajqc eksperiments: (40 lokālie pavedieni, 40 + 40 attālinātie pavedieni vienlaicīgi vienlaicīgi, ievietojot 1200 W rindas), secinājums ir šāds:
1. Tipiskos kaskādes lietojumos. @@IDENTITY nevar izmantot, un vienlaicīgi konflikti rodas, ja 1W ir vairākas rindas CII850, 256M SD mašīnās. P42.8C un 512M DDR ir vienlaicīgs konflikts, kad ir tikai vairāk nekā 6000 līniju.
2.SCOPE_IDENTITY() ir absolūti uzticams un to var izmantot glabāšanas procesā, pat trigeri nav jāveido, un nav vienlaicīgu konfliktu
SELECT IDENT_CURRENT('TableName') — atgriež pēdējo etiķetes vērtību, kas ģenerēta norādītajā tabulā
SELECT IDENT_INCR('TableName') - atgriež norādītās tabulas atzīmēto lauka pieauguma vērtību
SELECT IDENT_SEED('TableName') - atgriež norādītās tabulas atzīmēto lauka sēklas vērtību
Atgriež pēdējā ievietotā ieraksta automātisko numuru
SELECT IDENT_CURRENT('Tabulas_nosaukums')
Atgriezties pie nākamā automātiskā numura:
SELECT IDENT_CURRENT('Tabulas_nosaukums')+(SELECT IDENT_INCR('Tabulas_nosaukums'))
SELECT @@IDENTITY — atgriež pēdējo atzīmēto vērtību, kas tika ģenerēta visās tabulās pašreizējā sesijā
|