Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 12386|Απάντηση: 0

[Πηγή] Ο SqlServer υλοποιεί το αναγνωριστικό της εγγραφής που εισήχθη πρόσφατα

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 15/6/2016 11:45:40 π.μ. | | |

Πηγή: Διαδίκτυο Συγγραφέας: Άγνωστος

- Δημιουργήστε βάσεις δεδομένων και πίνακες

δημιουργία βάσης δεδομένων MyDataBase

χρησιμοποιήστε το MyDataBase

δημιουργία πίνακα mytable

id int ταυτότητα(1,1),

Όνομα varchar(20)



--Εκτελέστε αυτήν την SQL για να μάθετε την τιμή της αυτοαυξητικής στήλης που αντιστοιχεί στην εγγραφή που μόλις εισήχθη

εισαγωγή στις τιμές mytable('Li Si')

Επιλέξτε @@identity

2. Σύγκριση των τριών μεθόδων

Στον SQL Server 2000, υπάρχουν τρεις παρόμοιες δυνατότητες: SCOPE_IDENTITY, IDENT_CURRENT και @@IDENTITY, οι οποίες επιστρέφουν τιμές που έχουν εισαχθεί στη στήλη IDENTITY.

IDENT_CURRENT Επιστρέφει την τελευταία τιμή αναγνώρισης που δημιουργήθηκε για έναν συγκεκριμένο πίνακα σε οποιαδήποτε περίοδο λειτουργίας και οποιοδήποτε εύρος. IDENT_CURRENT Δεν περιορίζεται από το εύρος και τη συνεδρία, αλλά από έναν καθορισμένο πίνακα. IDENT_CURRENT Επιστρέφει την τιμή που δημιουργήθηκε για έναν συγκεκριμένο πίνακα σε οποιαδήποτε περίοδο λειτουργίας και εύρος.

@@IDENTITY Επιστρέφει την τελευταία τιμή αναγνώρισης που δημιουργήθηκε για οποιονδήποτε πίνακα σε όλα τα πεδία της τρέχουσας περιόδου λειτουργίας.

SCOPE_IDENTITY Επιστρέφει την τελευταία προσδιορισμένη τιμή που δημιουργήθηκε για την τρέχουσα περίοδο λειτουργίας και οποιονδήποτε πίνακα στο τρέχον εύρος

SCOPE_IDENTITY και @@IDENTITY επιστρέφουν την τελευταία τιμή αναγνώρισης που δημιουργήθηκε σε οποιονδήποτε πίνακα στην τρέχουσα περίοδο λειτουργίας. Ωστόσο, SCOPE_IDENTITY επιστρέφει μόνο τιμές που έχουν εισαχθεί στο τρέχον εύρος. @@IDENTITY Δεν περιορίζεται σε συγκεκριμένο πεδίο εφαρμογής.

Για παράδειγμα, υπάρχουν δύο πίνακες, T1 και T2, στους οποίους ορίζεται ένα έναυσμα INSERT. Όταν εισάγεται μια γραμμή στο T1, ενεργοποιείται η σκανδάλη και εισάγεται μια γραμμή στο T2. Αυτό το παράδειγμα απεικονίζει δύο πεδία: ένα στο T1 και ένα στο T2 ως αποτέλεσμα του εναύσματος.

Υποθέτοντας ότι τόσο το T1 όσο και το T2 έχουν στήλες IDENTITY, το @@IDENTITY και το SCOPE_IDENTITY θα επιστρέψουν διαφορετικές τιμές στο τέλος της δήλωσης INSERT στο T1.

@@IDENTITY Επιστρέφει την τελευταία τιμή της στήλης IDENTITY που εισήχθη σε οποιοδήποτε εύρος της τρέχουσας συνεδρίας, η οποία είναι η τιμή που εισήχθη στο T2.

SCOPE_IDENTITY() επιστρέφει την τιμή IDENTITY που εισήχθη στο T1, η οποία είναι η τελευταία INSERT που εμφανίστηκε στο ίδιο εύρος. Εάν η συνάρτηση SCOPE_IDENTITY() κληθεί πριν από την εμφάνιση της δήλωσης εισαγωγής στη στήλη ταυτότητας, η συνάρτηση επιστρέφει μια τιμή NULL.

Οι τιμές που επιστρέφονται από IDENT_CURRENT('T1') και IDENT_CURRENT('T2') είναι οι τελευταίες αυτοαυξητικές τιμές των δύο πινάκων, αντίστοιχα.

Το πείραμα του AJQC: (40 τοπικά νήματα, 40+40 απομακρυσμένα νήματα ταυτόχρονα δοκιμή, εισαγωγή σειρών 1200W), το συμπέρασμα είναι:

1. Σε τυπικές διαδοχικές εφαρμογές. @@IDENTITY δεν μπορούν να χρησιμοποιηθούν και θα προκύψουν ταυτόχρονες διενέξεις όταν το 1W είναι πολλαπλών σειρών σε μηχανήματα SD CII850, 256M. Στα P42.8C και 512M DDR, υπάρχει ταυτόχρονη σύγκρουση όταν υπάρχουν μόνο περισσότερες από 6000 γραμμές.

Το 2.SCOPE_IDENTITY() είναι απολύτως αξιόπιστο και μπορεί να χρησιμοποιηθεί στη διαδικασία αποθήκευσης, ακόμη και οι ενεργοποιητές δεν χρειάζεται να κατασκευαστούν και δεν υπάρχουν ταυτόχρονες διενέξεις

SELECT IDENT_CURRENT('TableName') - Επιστρέφει την τελευταία τιμή ετικέτας που δημιουργήθηκε στον καθορισμένο πίνακα

SELECT IDENT_INCR('TableName') - επιστρέφει την επισημασμένη τιμή αύξησης πεδίου για τον καθορισμένο πίνακα

SELECT IDENT_SEED('TableName') - επιστρέφει την επισημασμένη τιμή σπόρου πεδίου του καθορισμένου πίνακα

Επιστρέφει τον αυτόματο αριθμό της τελευταίας εγγραφής που εισήχθη

SELECT IDENT_CURRENT('ΌνομαΠίνακα')

Επιστροφή στον επόμενο αυτόματο αριθμό:

SELECT IDENT_CURRENT('TableName')+(SELECT IDENT_INCR('TableName'))

SELECT @@IDENTITY - Επιστρέφει την τελευταία επισημασμένη τιμή που δημιουργήθηκε σε όλους τους πίνακες της τρέχουσας συνεδρίας








Προηγούμενος:Ο SQLServer εφαρμόζει την καθολική μέθοδο διαχωρισμού συμβολοσειρών
Επόμενος:Κοινή χρήση χρήσιμου αντικειμένου αναζήτησης
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com