Vienības kods ir šāds:
Ievietošanas kods ir šāds:
Mēs iestatām tikai nosaukuma vērtību un nepiešķiram vērtību id, apskatīsim, kas ir ģenerētais sql paziņojums??? , šādi:
exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier) IEVIETOJIET [dbo]. [Testa cilne] ([Vārds]) OUTPUT ievietots. [Id] UZ @generated_keys VĒRTĪBAS (@0) SELECT t.[Id] NO @generated_keys AS g JOIN [dbo]. [Testa cilne] AS t ON g.[Id] = t.[Id] KUR @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' arhitektswww.itsvse.com'
Mēs atklājām, ka tabulā INSERT TestTab tiek ievietots tikai lauks Nosaukums, vai ID ir noklusējuma vērtība??? Mēs konstatējām, ka
ef ir palīdzējis man iestatīt Id primārās atslēgas noklusējuma vērtības tipu, noklusējuma vērtību vai saistījumu "(newsequentialid())", un izmantoja funkciju newsequentialid(), kas tiek ieviesta šādi:
1.:Funkcijas newsequentialid lielākā priekšrocība salīdzinājumā ar funkciju newid ir tāda, ka, izveidojot indeksu laukā UNIQUEIDENTIFIER, jaunā vērtība, kas ģenerēta, izmantojot newid, netiek fiksēta, tāpēc jaunā vērtība izraisa izmaiņas indeksa B+ kokā nejauši. Ja jaunā vērtība, ko rada newsequentialid, ir regulāra, tad indeksa B+ koka izmaiņas ir regulāras. Pareizība un neatbilstība uzlabo veiktspēju.
2: UNIQUEIDENTIFIER ir ļoti ērta lieta, ko darīt kā primāro atslēgu, kurai ir neaizvietojamas priekšrocības tādās operācijās kā datu apvienošana Tomēr, ņemot vērā parasto GUID decentralizāciju, ja primārā atslēga tiek pievienota klastera indeksam, ierakstu ievietošana būs daudz mazāk efektīva
SQL SERVER 2005 pievieno jaunu funkciju ar nosaukumu NEWSEQUENTIALID, ko MSDN paskaidro: Norādītajā datorā izveidojiet GUID, kas ir lielāks par jebkuru funkcijas iepriekš ģenerēto GUID. Vaicājumā nevar norādīt atsauci uz NEWSEQUENTIALID().
Piezīme: Tas nozīmē, ka to var izmantot tikai kā datu bāzes kolonnas DEFAULT VALUE un nevar izpildīt tādus paziņojumus kā SELECT NEWSEQUENTIALID(). NEWSEQUENTIALID() ģenerētais GUID konkrētajā datorā ir unikāls tikai tad, ja datoram nav tīkla kartes.
Piezīmes: Šis teikums ir nepareizs, tam vajadzētu būt, ka tikai tad, ja datoram ir tīkla karte, ģenerētais GUID ir unikāls pasaulē Varat izmantot funkciju NEWSEQUENTIALID(), lai ģenerētu GUID, lai samazinātu lappušu strīdus lapas līmeņa indeksā.
|