Subjekto subjekto kodas yra toks:
Įterpimo kodas yra toks:
Mes nustatome tik pavadinimo reikšmę ir nepriskiriame reikšmės id, pažvelkime, kas yra sugeneruotas sql sakinys??? , kaip nurodyta toliau:
exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier) INSERT [dbo]. [TestTab] ([Vardas]) OUTPUT įterptas. [Id] Į @generated_keys REIKŠMĖS (@0) SELECT t.[Id] FROM @generated_keys AS g JOIN [dbo]. [TestTab] AS t ON g.[Id] = t.[Id] KUR @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' architektaswww.itsvse.com'
Nustatėme, kad lentelėje INSERT TestTab įterpiamas tik laukas Pavadinimas, ar ID turi numatytąją reikšmę??? Mes nustatėme, kad
ef padėjo man nustatyti numatytąjį Id pirminio rakto reikšmės tipą, numatytąją reikšmę arba susiejimą "(newsequentialid())", ir panaudojo funkciją newsequentialid(), kuri pristatoma taip:
1.:Didžiausias funkcijos newsequentialid pranašumas prieš funkciją newid yra tas, kad jei sukuriate indeksą UNIQUEIDENTIFIER lauke, nauja reikšmė, sugeneruota naudojant newid, nėra fiksuota, todėl dėl naujos reikšmės indekso B+ medžio pokytis yra atsitiktinis. Jei nauja naujienų ekviencialido sukurta reikšmė yra taisyklinga, tada indekso B+ medžio pokytis yra reguliarus. Reguliarumas ir nereguliarumas lemia veiklos rezultatų gerinimą.
2: UNIQUEIDENTIFIER yra labai patogus dalykas kaip pirminis raktas, turintis nepakeičiamų pranašumų tokiose operacijose kaip duomenų sujungimas Tačiau dėl įprastų GUID decentralizacijos, jei pirminis raktas bus pridėtas prie sugrupuoto indekso, jis bus daug mažiau efektyvus įterpiant įrašus
SQL SERVER 2005 prideda naują funkciją, vadinamą NEWSEQUENTIALID, kurią MSDN paaiškina: Nurodytame kompiuteryje sukurkite GUID, kuris yra didesnis už bet kurį anksčiau funkcijos sugeneruotą GUID. NEWSEQUENTIALID() užklausoje nurodyti negalima.
Pastaba: Tai reiškia, kad jis gali būti naudojamas tik kaip duomenų bazės stulpelio NUMATYTOJI REIKŠMĖ ir negali vykdyti tokių teiginių kaip SELECT NEWSEQUENTIALID(). NEWSEQUENTIALID() sugeneruotas GUID yra unikalus tame kompiuteryje tik tuo atveju, jei kompiuteryje nėra tinklo plokštės.
Pastaba: Šis sakinys yra neteisingas, turėtų būti, kad tik tada, kai kompiuteris turi tinklo plokštę, sugeneruotas GUID yra unikalus pasaulyje Galite naudoti NEWSEQUENTIALID(), kad sugeneruotumėte GUID, kad sumažintumėte puslapio nesutarimus lapo lygio indekse.
|