Tässä artikkelissa tarkastellaan Identiteetti-toiminto SQL Server esimerkkejä ja eroja näiden toiminnot.
Katsaus IDENTITEETIN sarakkeita
SQL Server, luoda identiteettiä, sarake auto-tuottaa vähitellen arvoja. Se tuottaa ennalta määritettyihin siemeniin (alkuarvo) ja porrastusarvoon (lisäys) perustuvia arvoja. Oletetaan esimerkiksi, että meillä on työntekijäpöytä ja haluamme luoda työllistymistä automaattisesti., Meillä on aloittava työntekijä ID 100 ja edelleen haluavat lisätä jokaisen uuden EmpID yhdellä. Tässä tapauksessa meidän on määriteltävä seuraavat arvot.
- Seed: 100
- Vaihe: 1
katsotaanpa lisätä pari kirjaa tämän taulukon ja tarkastella tietueita.
näet, että ensimmäinen työntekijä saa ID-arvon 100 ja jokainen uusi tietueiden ID-arvo saa yhden lisäyksen.
– Meillä on muutamia hyödyllisiä Identiteetti toimintoja SQL Server työskennellä IDENTITEETTI sarakkeita taulukkoon. Tutkitaan seuraavia IDENTITEETTITOIMINTOJA esimerkein.,
- SQL @@IDENTITEETTI Toiminto
- SQL SCOPE_IDENTITY () – Funktio
- SQL IDENT_CURRENT Toiminto
- SQL-IDENTITEETTI Toiminto
SQL @@IDENTITEETTI Toiminto
käytämme järjestelmän toiminto @@IDENTITEETIN palata suurin käytetty IDENTITEETIN arvo taulukossa IDENTITEETIN sarake nykyisen istunnon. Kun asetamme rivin taulukkoon, @ @ IDENTITY-funktion sarake antaa statementista syntyvän identiteetin arvon. Jos suoritamme kyselyn, joka ei tuottanut IDENTITEETTIARVOJA, saamme nollan arvon tuotoksessa., SQL @IDENTITY toimii nykyisen istunnon puitteissa. Emme voi käyttää sitä etäpalvelimella tai linkitetyllä palvelimella.
Let ’ s understand it with the following example.
- Vaihe 1: Meillä on nykyinen maksimi identiteetin arvo 110 vuonna EmployeeData taulukko
- Vaihe 2: nykyisessä istunnossa, me asettaa ennätys EmployeeData taulukko., Se kasvattaa identiteetin arvo kerrallaan
- Vaihe 3: Voimme varmistaa, että suurin käytetty identiteetin arvo on 111
- Vaihe 4: Käytämme SELECT @@IDENTITEETTI funktio nykyisessä istunnossa saada identiteetin arvo, joka luodaan istunnon
katsotaanpa lisätä useita tietueita tämä taulukko ja suorittaa SELECT @@IDENTITEETTIÄ.
jos lisäämme useita tietueita istuntoon, valitse @Identity palauttaa tässä istunnossa syntyvän identiteetin enimmäisarvon., Seuraavassa esimerkissä lisätään kolme tietuetta, ja se kasvattaa IDENTITEETTIARVOJA kolmella nykyisestä identiteettiarvosta 111.
Jos lausunto ei aiheuta identiteetti arvot, se palauttaa NULL-arvojen tuotoksen.
SQL SCOPE_IDENTITY () – funktio
käytämme SCOPE_IDENTITY () – funktio palauttaa viime IDENTITEETIN arvo taulukossa nykyisessä laajuudessa. Soveltamisala voi olla moduuli, käynnistin, toiminto tai tallennettu menettely., Voimme pitää SQL SCOPE_IDENTITY () – funktiota @@IDENTITY-funktion kaltaisena, mutta se rajoittuu tiettyyn laajuuteen. Se palauttaa NULL-arvon, jos tämä toiminto on mukana ennen insert julkilausuman tuottaa arvoa alle sama soveltamisala.
seuraavassa esimerkissä, näemme, että sekä @@IDENTITEETTI ja SCOPE_IDENTITY() palauttaa saman arvon nykyisessä istunnossa ja samanlainen soveltamisala.
katsotaanpa ymmärrä eroa SCOPE_IDENTITY() ja @@IDENTITEETIN toinen esimerkki.,
katsotaan, että meillä on kaksi taulukkoa EmployeeData ja osastot taulukko. Luomme EmployeeData-taulukkoon insertin laukaisimen. Kun olemme lisätä minkä tahansa rivin EmployeeData, se kutsuu määritelty laukaista lisäämällä rivin Yksiköt.
seuraavan kyselyn, voimme luoda laukaista aseta oletusarvo ” SE ” osastojen taulukko, joka lisätään EmployeeData taulukko.,f7″>
1
2
3
4
5
6
|
LUO LAUKAISTA T_INSERT_DEPARTMENT
KÄYTÖSSÄ EmployeeData
LISÄÄ KUIN
BEGIN
LISÄÄ Osastojen VALUES (’SE’)
END;
|
oletetaan, aseta arvo Työntekijän tietojen taulukon ja tarkastella tuotoksen sekä @@IDENTITEETTI ja SCOPE_IDENTITY() toiminnot.,
nykyisessä istunnossa lisäsimme tietoja EmployeeData-taulukkoon. Se luo identiteetin tähän taulukkoon. Identiteetin siemenarvo on EmployeeData-taulukon 1.
Kun me aseta arvo EmployeeData taulukko, se ampuu liipaisin, aseta arvo Osastojen taulukko. Tunnistenumeron arvo on Osastotaulukossa 100.
- Saamme tuotos 100 SELECT @@IDENTITEETTI toiminto
- SCOPE_IDENTITY funktio palauttaa identity arvo nykyisessä laajuudessa vain., Se antaa lähtö 1 toiminto
SQL IDENT_CURRENT () – funktio
käytämme IDENT_CURRENT funktio palauttaa viimeisen IDENTITEETIN tuottama arvo määritetty taulukossa missään yhteydessä. Se ei ota huomioon identiteettiarvoa tuottavan SQL-kyselyn laajuutta. Meidän on täsmennettävä taulukko, jota varten haluamme tarkistaa henkilöllisyyden arvon.
seuraavassa kuvakaappauksessa näemme, että lisäämme tietoja Session id 64: ään ja se luo identiteetti-arvon 2 EmployeeData-taulukkoon.,
voimme tarkistaa toisesta yhteysikkunasta EmployeeData-taulukon nykyisen identiteetin arvon ja saada saman tuotoksen kuin identiteetti-arvo 2.,
1
|
SELECT IDENT_CURRENT(’EmployeeData’) AS IdentityValue
|
SQL IDENTITY Function
In my previous article, we explored SQL SELECT INTO Statement, to create a new table and inserted data into it from the existing table., SQL IDENTITY-funktion avulla voimme lisätä identiteetin arvot SQL SELECT-toiminnon luomaan taulukkoon statementiksi.
oletusarvoisesti, jos lähdetaulukossa on IDENTITEETTIKOLONNI, niin select INTO statement-ohjelmalla luotu taulukko perii sen. Harkitse skenaariota, jossa haluat luoda taulukon käyttämällä SELECT INTO statement tuotoksesta näkymä tai liittyä useita taulukoita. Tässä tapauksessa haluat luoda IDENTITEETTIPALSTAN myös uuteen taulukkoon.,
- Huom: SQL-IDENTITEETTI funktio on erilainen IDENTITEETTI kiinteistön me käyttää luotaessa tahansa taulukon.
meidän on määriteltävä tietotyyppi sarakkeelle, jossa käytetään SQL Identity-toimintoa. Meidän on myös määriteltävä siemen-ja Askelarvot identiteetin määrittelemiseksi.
Emme voi käyttää SQL IDENTITY-toimintoa Select statementissa. Saamme seuraavan virheviestin.
Msg 177, Tasolla 15, Valtio, 1, Linja 2The IDENTITEETTI toimintoa voi käyttää vain, kun SELECT on OSAKSI lauseke.,
Let ’ s luoda taulukon käyttäen SQL VALITSE julkilausuma seuraavan kyselyn.
kun lausunto on suoritettu, tarkista Taulukon ominaisuudet sp_help-komennolla.
1
|
sp_help ’TEMPTABLE’
|
Voit nähdä IDENTITEETIN sarake TEMPTABLE ominaisuuksia kohti määritettyjä ehtoja.,
katsotaanpa toinen esimerkki. Suorita seuraava komento.,
1
2
3
4
5
|
VALITSE IDENTITEETTI( INT, 100, 2) NEW_ID,
ID
Nimi
OSAKSI temp2
VUODESTA employeedata;
|
– Meillä on jo IDENTITEETTI sarakkeeseen EmployeeData taulukko. Uusi taulukko temp2 perii myös IDENTITEETTIPALSTAN., Taulukossa ei voi olla useita henkilötunnuksia. Tämän vuoksi saamme seuraavan virheviestin.
Msg 8108, Taso 16, Valtio, 1, Linja 1Cannot lisää identiteetti sarakkeen, käyttämällä VALITSE OSAKSI lausunto, taulukko ’temp2’, joka jo on sarake ”ID”, joka perii identiteetin omaisuutta.
Tiivistelmä
- SQL-IDENTITEETTI Toiminnot SCOPE_IDENTITY, IDENT_CURRENT, ja @@IDENTITEETIN palaa samanlainen lähtö IDENTITEETTI sarakkeet nykyisen istunnon
- SCOPE_IDENTITY palauttaa arvoja nykyisessä laajuudessa vain., Voimme määritellä soveltamisala moduuli, Tallennettu menettely, trigger, tai toiminto
- IDENT_CURRENT funktio palauttaa identity arvo tietyn taulukon osalta yhteys, että muutettu arvo
- Voimme käyttää SQL-IDENTITEETTI-toiminto määrittää IDENTITEETIN taulukossa luotu SQL VALITSE selvitys
Johtopäätös
tässä artikkelissa, me tutkia Identiteettiä toimintoja SQL Server. Meidän pitäisi tuntea toiminnot käyttää niitä kirjallisesti t-SQL kyselyt. Jos sinulla on kommentteja tai kysymyksiä, voit jättää ne kommentit alla.,
- Tekijä
- Viimeisimmät Viestit
Hän on luoja yksi suurimmista ilmainen online-kokoelmia artikkeleita yhden aiheen, hänen 50-osainen sarja, SQL Server Aina Saatavuus Ryhmiä. Perustuu hänen panoksensa SQL Server yhteisö, hän on tunnustettu kanssa eri palkintoja, kuten arvostetun ”Best author of the year” jatkuvasti vuonna 2020 ja 2021 klo SQLShack.,
Raj on aina kiinnostunut uusista haasteista, joten jos tarvitset konsultointi apua tahansa aiheesta, jota käsitellään hänen kirjoituksissaan, hän voi olla tavoitettavissa rajendra.gupta16@gmail.,com
Näytä kaikki viestit Rajendra Gupta
- Suorittaa pienet ja suuret versio päivitykset AWS RDS SQL Server – tammikuu 29, 2021
- Käyttöönotto AWS-RDS-PostgreSQL-instanssit – 27. tammikuuta 2021
- Siirtyminen paikalliseen SQL-tietokantoihin AWS RDS SQL Server käyttämällä AWS DMS – 25. tammikuuta 2021