De entiteitscode van de entiteit is als volgt:
De invoegcode is als volgt:
We stellen alleen de waarde van naam in en wijzen geen waarde toe aan id, laten we eens kijken wat de gegenereerde SQL-instructie is??? , als volgt:
exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier) INSERT [dbo]. [TestTab] ([Naam]) OUTPUT ingevoegd. [Id] IN @generated_keys WAARDEN (@0) SELECTEER t.[Id] VAN @generated_keys ALS G JOIN [dbo]. [TestTab] AS T ON g.[Id] = t.[Id] WAAR @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' architectwww.itsvse.com'
We ontdekten dat de INSERT TestTab-tabel alleen het Naam-veld invoegt, heeft Id een standaardwaarde??? We hebben gevonden dat
ef heeft mij geholpen het standaardwaardetype van de primaire ID sleutel in te stellen, de standaardwaarde of binding "(newsequentialid())", en gebruikte ik de newsequentialid()-functie, die als volgt wordt geïntroduceerd:
1.: Het grootste voordeel van de newsequentialid-functie ten opzichte van de newid-functie is dat als je een index maakt op een UNIQUEIDENTIFIER-veld, de nieuwe waarde die met newid wordt gegenereerd niet vaststaat, waardoor de nieuwe waarde ervoor zorgt dat de verandering in de index B+-boom willekeurig is. Als de nieuwe waarde die door de newsequentialid wordt geproduceerd regelmatig is, dan is de verandering van de index B+-boom regulier. Regelmaat en onregelmatigheid leiden tot prestatieverbeteringen.
2: UNIQUEIDENTIFIER is een zeer handige functie als primaire sleutel, wat onvervangbare voordelen heeft bij operaties zoals data-samenvoeging Door de decentralisatie van gewone GUID's zal het echter veel minder efficiënt zijn bij het invoegen van records als de primaire sleutel aan een geclusterde index wordt toegevoegd
SQL SERVER 2005 voegt een nieuwe functie toe genaamd NEWSEQUENTIALID, die MSDN uitlegt: Maak een GUID aan op de gespecificeerde machine die groter is dan welke GUID die eerder door de functie is gegenereerd. NEWSEQUENTIALID() kan niet worden verwezen in de query.
Opmerking: Dit betekent dat het alleen als de DEFAULT VALUE van een databasekolom kan worden gebruikt en geen statements zoals SELECT NEWSEQUENTIALID() kan uitvoeren. De GUID die door NEWSEQUENTIALID() wordt gegenereerd, is uniek in die specifieke computer alleen als de computer geen netwerkkaart heeft.
Opmerking: Deze zin is onjuist, het zou moeten zijn dat alleen wanneer de computer een netwerkkaart heeft, de gegenereerde GUID uniek is in de wereld Je kunt NEWSEQUENTIALID() gebruiken om een GUID te genereren om paginacontentie op de bladniveau index te verminderen.
|