Yksikön koodi on seuraava:
Insert-koodi on seuraava:
Asetamme vain nimen arvon emmekä anna arvoa id:lle, katsotaanpa mikä generoitu SQL-lause on??? , seuraavasti:
exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier) INSERT [dbo]. [TestTab] ([Nimi]) OUTPUT lisätty. [Id] INTO @generated_keys ARVOT (@0) VALITSE t.[Id] VUODESTA @generated_keys AS G JOIN [DBO]. [TestTab] AS t on g.[Id] = t.[Id] MISSÄ @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' arkkitehtiwww.itsvse.com'
Huomasimme, että INSERT TestTab -taulu lisää vain Nimi-kentän, onko Id:llä oletusarvo??? Huomasimme, että
ef on auttanut minua asettamaan Id-pääavaimen oletusarvotyypin, oletusarvon tai sidonnan "(newsequentialid())", ja käyttänyt newsequentialid()-funktiota, joka esiteltiin seuraavasti:
1.: Newsequentialid-funktion suurin etu newid-funktioon verrattuna on se, että jos luot indeksin UNIQUEIDENTIFIER-kentälle, newid-kentällä generoitu uusi arvo ei ole kiinteä, joten uusi arvo aiheuttaa indeksin B+ puun muutoksen satunnaiseksi. Jos newsequentialidin tuottama uusi arvo on säännöllinen, indeksi B+ -puun muutos on säännöllinen. Säännöllisyys ja epäsäännöllisyys johtavat suorituskyvyn parannuksiin.
2: UNIQUEIDENTIFIER on erittäin kätevä pääavaimena, jolla on korvaamattomia etuja esimerkiksi tietojen yhdistämisessä Kuitenkin tavallisten GUID-mallien hajauttamisen vuoksi, jos ensisijainen avain lisätään klusteroituun indeksiin, tietueiden lisääminen on paljon tehottomampi
SQL SERVER 2005 lisää uuden toiminnon nimeltä NEWSEQUENTIALID, jonka MSDN selittää: Luo määritettyyn koneeseen GUID, joka on suurempi kuin mikään aiemmin funktion tuottama GUID. NEWSEQUENTIALID() ei voi viitata kyselyssä.
Huomautus: Tämä tarkoittaa, että sitä voidaan käyttää vain tietokantasarakkeen OLETUSARVONA, eikä se voi suorittaa lauseita kuten SELECT NEWSEQUENTIALID(). NEWSEQUENTIALID():n tuottama GUID on yksilöllinen kyseisessä tietokoneessa vain, jos tietokoneella ei ole verkkokorttia.
Huomautus: Tämä lause on väärä, sen pitäisi olla niin, että vain kun tietokoneella on verkkokortti, luotu GUID on ainutlaatuinen maailmassa Voit käyttää NEWSEQUENTIALID():ta luodaksesi GUID:n, joka vähentää sivujen kiistaa lehtitason indeksissä.
|