Der Entitätscode der Gesellschaft ist wie folgt:
Der Einfügecode lautet wie folgt:
Wir setzen nur den Wert von Name und weisen keinen Wert id zu, schauen wir uns an, was die generierte SQL-Anweisung ist??? , wie folgt:
exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier) INSERT [dbo]. [TestTab] ([Name]) OUTPUT eingefügt. [Id] IN @generated_keys WERTE (@0) WÄHLEN SIE T. [ID] VON @generated_keys ALS G JOIN [dbo]. [TestTab] AS T ON g.[Id] = t.[Id] WO @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' architectwww.itsvse.com'
Wir haben festgestellt, dass die INSERT TestTab-Tabelle nur das Name-Feld einfügt, hat Id einen Standardwert??? Wir haben festgestellt, dass
ef hat mir geholfen, den Standardwerttyp des Id-Primärschlüssels, den Standardwert oder die Bindung "(newsequentialid())" einzustellen und die Funktion newsequentialid() zu verwenden, die wie folgt eingeführt wird:
1.: Der größte Vorteil der newsequentialid-Funktion gegenüber der Newid-Funktion ist, dass wenn man einen Index auf einem UNIQUEIDENTIFIER-Feld erstellt, der mit newid generierte neue Wert nicht festgelegt ist, sodass der neue Wert die Änderung im Index B+-Baum zufällig macht. Wenn der neue Wert, der vom Newsequentialid erzeugt wird, regulär ist, dann ist die Änderung des Index B+-Baums regulär. Regelmäßigkeit und Unregelmäßigkeit führen zu Leistungsverbesserungen.
2: UNIQUEIDENTIFIER ist als Primärschlüssel sehr praktisch, was bei Operationen wie Datenzusammenführung unersetzliche Vorteile hat Aufgrund der Dezentralisierung gewöhnlicher GUIDs ist es jedoch, wenn der Primärschlüssel einem Cluster-Index hinzugefügt wird, beim Einfügen von Datensätzen deutlich weniger effizient
SQL SERVER 2005 fügt eine neue Funktion namens NEWSEQUENTIALID hinzu, die MSDN erklärt: Erstellen Sie auf der angegebenen Maschine eine GUID, die größer ist als alle zuvor von der Funktion erzeugten GUID. NEWSEQUENTIALID() kann in der Abfrage nicht referenziert werden.
Hinweis: Das bedeutet, dass es nur als STANDARDWERT einer Datenbankspalte verwendet werden kann und keine Anweisungen wie SELECT NEWSEQUENTIALID() ausführen kann. Die von NEWSEQUENTIALID() erzeugte GUID ist in diesem speziellen Computer nur dann eindeutig, wenn der Computer keine Netzwerkkarte besitzt.
Hinweis: Dieser Satz ist falsch, es sollte so sein, dass nur wenn der Computer eine Netzwerkkarte hat, die erzeugte GUID weltweit einzigartig ist Sie können NEWSEQUENTIALID() verwenden, um eine GUID zu generieren, die Seitenkonflikte im Blatt-Index reduziert.
|