Gidai

Kaip ištaisyti klaidą „Negalima į lentelę įterpti aiškios tapatybės stulpelio vertės, kai IDENTITY_INSERT nustatyta į OFF“?

Kuriant „SQL Server“ duomenų bazę, pagrindinio rakto stulpelyje dažnai nustatomas automatinis prieaugis. Tam reikia nustatyti pirminio rakto stulpelio IDENTITY apribojimą. Pradinė vieta ir prieaugio žingsnis perkeliami į stulpelį „TAPATYBĖ“ kaip parametrus. Tuomet, kai pridedamas naujas įrašas ir nustatomas atpažinimo įterpimas į IŠJUNGTĄ, stulpelio „TAPATYBĖ“ vertė padidinama iš anksto nustatytu žingsniu, paprastai skaičiumi. Be to, ypatybė „IDENTITY INSERT“ nustatyta į ON tik vienoje lentelėje per vieną seansą.

Šiame straipsnyje aptarsime klaidą „Lentelėje negalima įterpti aiškios tapatybės stulpelio vertės

kai IDENTITY_INSERT nustatyta į OFF “
kaip parodyta žemiau.

Klaida atsiranda, kai vartotojas nustatė „identity_insert“ į „OFF“. Tada bando aiškiai įterpti duomenis į lentelės pirminio rakto stulpelį. Tai galima paaiškinti naudojant toliau pateiktą pavyzdį.

Duomenų bazių ir lentelių kūrimas:

Pirmiausia sukurkite duomenų bazę pavadinimu „appuals“.

Sukurkite lentelę pavadinimu „asmuo“ naudodami šį kodą. Pastatytas stalas naudojant a „PAGRINDINIS PAGRINDINIS TAPATYBĖ“

Sukurti lentelę asmuo (ID INT IDENTITY (1, 1), vardas_VARCHAR (MAX), pavardė VARCHAR (MAX))

„Tapatybės_įterpimo išjungimas |“ nustatymo sintaksė įjungta “:

The „Išjungti tapatybę_įterpti | įjungta “ padės mums išspręsti šią klaidą. Teisinga šio teiginio sintaksė yra tokia, kaip nurodyta toliau.

NUSTATYTI IDENTITY_INSERT. .   ĮJUNGTA 

Pirmasis argumentas yra duomenų bazės, kurioje yra lentelė, pavadinimas. Antrasis argumentas rodo schemą, kuriai priklauso ta lentelė, kurios tapatybės vertė turi būti nustatyta ĮJUNGTA arba IŠJUNGTA. Trečias argumentas

yra lentelė su stulpeliu „Tapatybė“.

Iš esmės yra du skirtingi duomenų įterpimo į lentelę būdai be klaidų. Tai laikoma šios klaidos sprendimu ir aptariama toliau.

1 klaida: nustatykite tapatybės_įterpimas išjungtą

Pirmuoju atveju į lentelę įterpsime duomenis su „IDENTITY INSERT“ nustatytas į „IŠJUNGTA“. Taigi, jei INSERT sakinyje yra ID, gausite klaidą „Negalima įterpti aiškios tapatybės stulpelio vertės lentelėje„ asmuo “, kai IDENTITY_INSERT nustatyta į OFF“.

Užklausos skirtuke vykdykite šį kodą.

 nustatyti tapatybę_įterpti asmenį; įterpti į asmens (ID, vardas, pavardė) reikšmes (3, „Sadia“, „Majeed“), (4, „Michel“, „Ronald“)

Rezultatas bus toks.

Sprendimas:

Sukant „IDENTIFIKAVIMAS IŠJUNGTAS“,„PAGRINDINIS RAKTO ID“ NETURI BŪTI PATEIKTA įterpimo sakinyje

Dabar vykdykite šį kodą užklausos skirtuke

 nustatyti tapatybę_įterpti asmenį; įterpti į asmens (vardas, pavardė) reikšmes ('Sadia', 'Majeed'), ('Michel', 'Ronald')

Taip duomenys be klaidos bus įterpti į lentelę. Be to, vartotojas neprivalo įterpti PAGRINDINIO RAKTO ID, jis automatiškai pridės unikalų ID vertę, kaip parodyta toliau pateiktame paveikslėlyje.

2 klaida: nustatykite ON_ ID

Antruoju atveju duomenis į lentelę įterpsime su „IDENTITY INSERT“ nustatytas į „ĮJUNGTA“. Taigi, jei INSERT sakinyje nėra ID, gausite klaidą „Msg 545, 16 lygio, 1 būsenos, 17 eilutė. Aiškią vertę reikia nurodyti tapatybės stulpelyje lentelėje„ asmuo “, kai IDENTITY_INSERT nustatoma kaip ĮJUNGTA, arba kai replikacijos vartotojas įterpia į tapatybės skiltį NEATKLEISTI“.

Sprendimas:

Sukant„ĮSIDĖKITE IDENTITETĄ“ „PAGRINDINIS RAKTAS ID “ turi būti intarpo sakinyje.

Užklausos skirtuke vykdykite šį kodą

 nustatyti tapatybę_įterpti asmenį; įterpti į asmens (ID, vardas, pavardė) reikšmes (5, „Džekas“, „juodas“), (6, „johnas“, „Vikis“)

Taip duomenys be klaidos bus įterpti į lentelę. Taigi PAGRINDINIS RAKTO ID yra aiškiai reikalaujama, kad vartotojas įterptų. Be to, ji automatiškai nepridės unikalios ID vertės, kaip parodyta toliau pateiktame paveikslėlyje.

Jei tu "NUSTATYTI IDENTITETO ĮTRAUKIMĄ “, jis liks visą sesiją. Taigi, kai tai bus nustatyta, galite pridėti tiek įrašų, kiek norite. Tai taip pat reiškia tik seansą, kuriame jis įgalintas. Taigi, jei atidarote kitą užklausos skirtuką, turite jį pasukti ĮJUNGTA dar kartą tam užklausos langui.

Copyright lt.absolutsilverpoint.com 2024

$config[zx-auto] not found$config[zx-overlay] not found