Lisää
Identiteetin siemenen palauttaminen SQL Serverin tietueiden poistamisen jälkeen
Olen lisännyt tietueita SQL Serverin tietokantataulukkoon. Taulukkoon oli määritetty ensisijainen avain, ja automaattisen lisäyksen identiteetin siemen on asetettu arvoon "Kyllä". Tämä tehdään pääasiassa siksi, että SQL Azuressa jokaisella taululla on oltava määritetty ensisijainen avain ja identiteetti.
Koska minun on kuitenkin poistettava joitakin tietueita taulusta, näiden taulujen identiteettisiemen häiriintyy ja indeksisarake (joka on luotu automaattisesti lisäämällä 1) häiriintyy.
Miten voin palauttaa identiteettisarakkeen sen jälkeen, kun olen poistanut tietueet, jotta sarakkeen järjestys olisi nousevassa numerojärjestyksessä?
Identiteettisaraketta ei käytetä vierasavaimena missään tietokannassa.
626
3
Hallintakomentoa
DBCC CHECKIDENT
käytetään identiteettilaskurin nollaamiseen. Komennon syntaksi on:Esimerkki:
Sitä ei tuettu Azure SQL Database -tietokannan aiemmissa versioissa, mutta sitä tuetaan nyt.
Huomaa, että
new_reseed_value
-argumentti vaihtelee SQL Server -versioissa dokumentaation mukaan:Mielestäni tämä tieto on kuitenkin harhaanjohtava* (itse asiassa aivan väärä), koska havaittu käyttäytyminen osoittaa, että ainakin SQL Server 2012 käyttää edelleen new_reseed_value* + current increment value -logiikkaa. Microsoft on jopa ristiriidassa saman sivun esimerkin C kanssa:
Tämä kaikki jättää kuitenkin mahdollisuuden erilaiselle käyttäytymiselle uudemmissa SQL Server -versioissa. Ainoa tapa olla varma, kunnes Microsoft selventää asioita omassa dokumentaatiossaan, on tehdä todellisia testejä ennen käyttöä.
Jossa 0 on
identity
AlkuarvoTämä on yleinen kysymys, ja vastaus on aina sama: älä tee sitä. Identiteettiarvoja on pidettävä mielivaltaisina, eikä niiden järjestystä ole olemassa.