Ο κωδικός οντότητας της οντότητας έχει ως εξής:
Ο κωδικός εισαγωγής έχει ως εξής:
Ορίζουμε μόνο την τιμή του ονόματος και δεν εκχωρούμε τιμή στο id, ας ρίξουμε μια ματιά στο τι είναι η δήλωση sql που δημιουργείται??? , ως εξής:
exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier) INSERT [dbo]. [Καρτέλα δοκιμής] ([Όνομα]) Το OUTPUT εισήχθη. [id] INTO @generated_keys ΤΙΜΈΣ (@0) SELECT t.[Id] ΑΠΟ @generated_keys AS g JOIN [dbo]. [Καρτέλα δοκιμής] AS t ON g.[Id] = t.[Id] ΟΠΟΥ @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' architectwww.itsvse.com'
Διαπιστώσαμε ότι ο πίνακας INSERT TestTab εισάγει μόνο το πεδίο Όνομα, το Id έχει προεπιλεγμένη τιμή??? Διαπιστώσαμε ότι
Το ef με βοήθησε να ορίσω τον προεπιλεγμένο τύπο τιμής του πρωτεύοντος κλειδιού Id, την προεπιλεγμένη τιμή ή τη δέσμευση "(newsequentialid())" και χρησιμοποίησε τη συνάρτηση newsequentialid(), η οποία παρουσιάζεται ως εξής:
1.:Το μεγαλύτερο πλεονέκτημα της συνάρτησης newsequentialid έναντι της συνάρτησης newid είναι ότι εάν δημιουργήσετε ένα ευρετήριο σε ένα πεδίο UNIQUEIDENTIFIER, η νέα τιμή που δημιουργείται χρησιμοποιώντας το newid δεν είναι σταθερή, επομένως η νέα τιμή προκαλεί την αλλαγή στο δέντρο ευρετηρίου B+ να είναι τυχαία. Εάν η νέα τιμή που παράγεται από το newsequentialid είναι κανονική, τότε η αλλαγή του δέντρου ευρετηρίου B+ είναι κανονική. Η κανονικότητα και η παρατυπία οδηγούν σε βελτιώσεις απόδοσης.
2: Το UNIQUEIDENTIFIER είναι ένα πολύ βολικό πράγμα ως πρωτεύον κλειδί, το οποίο έχει αναντικατάστατα πλεονεκτήματα σε λειτουργίες όπως η συγχώνευση δεδομένων Ωστόσο, λόγω της αποκέντρωσης των συνηθισμένων GUID, εάν το πρωτεύον κλειδί προστεθεί σε ένα ομαδοποιημένο ευρετήριο, θα είναι πολύ λιγότερο αποτελεσματικό κατά την εισαγωγή εγγραφών
Ο SQL SERVER 2005 προσθέτει μια νέα συνάρτηση που ονομάζεται NEWSEQUENTIALID, την οποία εξηγεί το MSDN: Δημιουργήστε ένα GUID στον καθορισμένο υπολογιστή που είναι μεγαλύτερο από οποιοδήποτε GUID που δημιουργήθηκε προηγουμένως από τη συνάρτηση. NEWSEQUENTIALID() δεν μπορεί να αναφερθεί στο ερώτημα.
Σημείωση: Αυτό σημαίνει ότι μπορεί να χρησιμοποιηθεί μόνο ως ΠΡΟΕΠΙΛΟΓΗ ΤΙΜΗ μιας στήλης βάσης δεδομένων και δεν μπορεί να εκτελέσει προτάσεις όπως SELECT NEWSEQUENTIALID(). Το GUID που δημιουργείται από τη συνάρτηση NEWSEQUENTIALID() είναι μοναδικό στον συγκεκριμένο υπολογιστή μόνο εάν ο υπολογιστής δεν διαθέτει κάρτα δικτύου.
Σημείωση: Αυτή η πρόταση είναι λάθος, θα πρέπει να είναι ότι μόνο όταν ο υπολογιστής διαθέτει κάρτα δικτύου, το GUID που δημιουργείται είναι μοναδικό στον κόσμο Μπορείτε να χρησιμοποιήσετε τη συνάρτηση NEWSEQUENTIALID() για να δημιουργήσετε ένα GUID για να μειώσετε τη διένεξη σελίδας στο ευρετήριο επιπέδου φύλλου.
|