Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 12386|Atbildi: 0

[Avots] SqlServer ievieš jaunievietotā ieraksta ID

[Kopēt saiti]
Publicēts 15.06.2016 11:45:40 | | |

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ā








Iepriekšējo:SQLServer īsteno universālo virkņu sadalīšanas metodi
Nākamo:Noderīga meklēšanas artefakta kopīgošana
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com