Üksuse kood on järgmine:
Sisestuskood on järgmine:
Me määrame ainult nime väärtuse ega määra väärtust id-le, vaatame, mis on genereeritud SQL-lause??? , järgmiselt:
exec sp_executesql N'DECARE @generated_keys table([Id] uniqueidentifier) INSERT [dbo]. [TestTab] ([Nimi]) VÄLJUND sisestatud. [Id] SISSE @generated_keys VÄÄRTUSED (@0) SELECT t.[Id] ALATES @generated_keys AS g JOIN [dbo]. [TestTab] AS t ON g.[Id] = t.[Id] KUS @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' arhitektwww.itsvse.com'
Leidsime, et INSERT TestTab tabel lisab ainult Name välja, kas Id-l on vaikimisi väärtus??? Me leidsime, et
ef on aidanud mul määrata Id primaarvõtme vaikimisi väärtuse tüübi, vaikimisi väärtuse või sidumise "(newsequentialid())", ning kasutanud newsequentialid() funktsiooni, mis tutvustatakse järgmiselt:
1.: Newsequentialid funktsiooni suurim eelis newid funktsiooni ees on see, et kui luua indeks UNIQUEIDENTIFIER väljale, siis newid abil genereeritud uus väärtus ei ole fikseeritud, mistõttu uus väärtus põhjustab juhusliku muutumise indeksi B+ puus. Kui newsequentialidi poolt toodetud uus väärtus on regulaarne, siis indeksi B+ puu muutus on regulaarne. Regulaarsus ja ebaregulaarsus viivad jõudluse paranemiseni.
2: UNIQUEIDENTIFIER on väga mugav asi esmase võtmena, millel on asendamatud eelised näiteks andmete ühendamise operatsioonides Kuid tavapäraste GUID-de detsentraliseerimise tõttu on primaarvõti lisamine klastriindeksisse palju vähem efektiivne
SQL SERVER 2005 lisab uue funktsiooni nimega NEWSEQUENTIALID, mida MSDN selgitab: Loo määratud masinal GUID, mis on suurem kui ükski varem funktsiooni poolt genereeritud GUID. NEWSEQUENTIALID() ei saa päringus viidata.
Märkus: See tähendab, et seda saab kasutada ainult andmebaasi veeru VAIKIMISI VÄÄRTUSENA ega saa täita lauseid nagu SELECT NEWSEQUENTIALID(). NEWSEQUENTIALID() poolt genereeritud GUID on selles konkreetses arvutis ainulaadne ainult siis, kui arvutil puudub võrgukaart.
Märkus: See lause on vale, peaks olema nii, et ainult siis, kui arvutil on võrgukaart, on genereeritud GUID maailmas ainulaadne NEWSEQUENTIALID() abil saab genereerida GUID, et vähendada lehe vaidlust leheindeksis.
|