Lähde: Internet Tekijä: Tuntematon
- Luo tietokantoja ja tauluja
luo tietokanta MyDataBase
käytä MyDataBasea
luo taulu mytable
id int identiteetti(1,1),
Nimi Varchar(20)
)
--Suorita tämä SQL selvittääksesi itseinkrementaalisen sarakkeen arvon, joka vastaa juuri lisättyä tietuetta
lisää mytable-arvoihin ('Li Si')
Valitse @@identity
2. Kolmen menetelmän vertailu
SQL Server 2000:ssa on kolme samankaltaista ominaisuutta: SCOPE_IDENTITY, IDENT_CURRENT ja @@IDENTITY, jotka kaikki palauttavat arvoja, jotka on lisätty IDENTITY-sarakkeeseen.
IDENT_CURRENT Palauttaa viimeisimmän tunnistearvon, joka on luotu tietylle taululle missä tahansa istunnossa ja missä tahansa laajuudessa. IDENT_CURRENT Ei rajoitettu laajuuteen ja istuntoon, vaan määriteltyyn taulukkoon. IDENT_CURRENT Palauttaa arvon, joka on generoitu tietylle taululle missä tahansa sessiossa ja laajuudessa.
@@IDENTITY Palauttaa viimeisimmän tunnistearvon, joka on luotu mille tahansa taululle kaikissa nykyisessä istunnossa.
SCOPE_IDENTITY Palauttaa viimeksi tunnistetun arvon, joka tuotettiin nykyiselle istunnolle, sekä minkä tahansa taulukon nykyisessä laajuudessa
SCOPE_IDENTITY ja @@IDENTITY palauttavat viimeisimmän tunnistearvon, joka on luotu missä tahansa taulukossa nykyisessä istunnossa. Kuitenkin SCOPE_IDENTITY palauttaa vain arvot, jotka on lisätty nykyiseen scopeen; @@IDENTITY Ei rajoitu tiettyyn laajuuteen.
Esimerkiksi on kaksi taulukkoa, T1 ja T2, joissa määritellään INSERT-liipaisin. Kun rivi lisätään T1:een, laukaisu aktivoituu ja rivi lisätään T2:een. Tämä esimerkki havainnollistaa kahta tähtäintä: yhden T1:llä ja toisen T2:lla laukaisumekanismin seurauksena.
Oletetaan, että sekä T1:llä että T2:lla on IDENTITY-sarakkeet, @@IDENTITY ja SCOPE_IDENTITY palauttavat eri arvot INSERT-lauseen lopussa T1:llä.
@@IDENTITY Palauttaa viimeisen IDENTITY-sarakkeen arvon, joka lisätään mihin tahansa skooppiin nykyisessä istunnossa, joka on T2:ssa lisätty arvo.
SCOPE_IDENTITY() palauttaa IDENTITY-arvon, joka on syötetty T1:een, joka on viimeinen INSERT, joka tapahtui samassa scopessa. Jos SCOPE_IDENTITY()-funktio kutsutaan ennen identiteettisarakkeen insertiolausetta scope-alueella, funktio palauttaa NULL-arvon.
IDENT_CURRENT('T1') ja IDENT_CURRENT('T2') palauttamat arvot ovat kahden taulukon viimeiset itseinkrementaaliset arvot.
ajqc:n koe: (40 paikallista säiettä, 40+40 etäsäiettä samanaikaisesti testattu, lisätty 1200W riviä), johtopäätös on:
1. Tyypillisissä kaskadisovelluksissa. @@IDENTITY ei ole käytettävissä, ja samanaikaisia ristiriitoja syntyy, kun 1W on monirivinen CII850- ja 256M SD -koneissa. P42.8C:llä ja 512M DDR:llä on samanaikainen ristiriita, kun linjaa on vain yli 6000.
2.SCOPE_IDENTITY() on täysin luotettava ja sitä voidaan käyttää tallennusprosessissa, edes laukaisimet eivät tarvitse rakentaa, eikä samanaikaisesti ole ristiriitoja
SELECT IDENT_CURRENT('TableName') - Palauttaa viimeisen tunnistearvon, joka on luotu määritetyssä taulukossa
SELECT IDENT_INCR('TableName') – palauttaa merkityn kentän lisäysarvon määritetylle taululle
SELECT IDENT_SEED('TableName') - palauttaa merkityn kentän siemenarvon määritellystä taulukosta
Palauttaa viimeksi lisätyn tietueen automaattisen numeron
VALITSE IDENT_CURRENT('TableName')
Palaa seuraavaan automaattiseen numeroon:
SELECT IDENT_CURRENT('TableName')+(SELECT IDENT_INCR('TableName'))
SELECT @@IDENTITY - Palauttaa viimeksi merkityn arvon, joka on luotu kaikissa taulukoissa nykyisessä istunnossa
|