Kod podmiotu jest następujący:
Kod wstawki jest następujący:
Ustawiamy tylko wartość nazwy i nie przypisujemy wartości id, zobaczmy, czym jest generowane polecenie sql??? , w następujący sposób:
exec sp_executesql N'DECLARE @generated_keys tabela([Id] uniqueidentifier) WSTAW [dbo]. [TestTab] ([Imię]) OUTPUT wstawiony. [Id] DO @generated_keys WARTOŚCI (@0) WYBIERZ t.[Id] OD @generated_keys AS g JOIN [dbo]. [TestTab] AS t ON g.[Id] = t.[Id] GDZIE @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' architectwww.itsvse.com'
Stwierdziliśmy, że tabela INSERT TestTab wstawia tylko pole Name, czy Id ma wartość domyślną??? Znaleźliśmy to
ef pomógł mi ustawić domyślny typ wartości klucza głównego ID, domyślną wartość lub powiązanie "(newsequentialid())", oraz użył funkcji newsequentialid(), która jest wprowadzona w następujący sposób:
1.:Największą zaletą funkcji newsequentialid w porównaniu z funkcją newid jest to, że jeśli utworzysz indeks na polu UNIQUEIDENTIFIER, nowa wartość wygenerowana za pomocą newid nie jest stała, więc nowa wartość powoduje losową zmianę w drzewie indeksu B+. Jeśli nowa wartość wygenerowana przez newsequentialid jest regularna, to zmiana drzewa indeksu B+ jest regularna. Regularność i nieregularność prowadzą do poprawy wydajności.
2: UNIQUEIDENTIFIER to bardzo wygodny element jako klucz główny, który ma niezastąpione zalety w operacjach takich jak łączenie danych Jednak ze względu na decentralizację zwykłych GUID, jeśli klucz główny zostanie dodany do indeksu klastrowego, wstawianie rekordów będzie znacznie mniej efektywne
SQL SERVER 2005 dodaje nową funkcję o nazwie NEWSEQUENTIALID, którą MSDN wyjaśnia: Stwórz GUID na podanej maszynie, który jest większy niż jakikolwiek wcześniej wygenerowany przez tę funkcję. NEWSEQUENTIALID() nie może być odwołany w zapytaniu.
Uwaga: oznacza to, że może być używany tylko jako WARTOŚĆ DOMYŚLNA kolumny bazy danych i nie może wykonywać instrukcji takich jak SELECT NEWSEQUENTIALID(). GUID generowany przez NEWSEQUENTIALID() jest unikalny w danym komputerze tylko wtedy, gdy komputer nie posiada karty sieciowej.
Uwaga: To zdanie jest błędne, powinno być tak, że tylko gdy komputer ma kartę sieciową, wygenerowany GUID jest unikalny w świecie Możesz użyć NEWSEQUENTIALID() do wygenerowania GUID i zmniejszenia konkurencji stron na indeksie na poziomie liści.
|