
Σε μια βάση δεδομένων του SQL Server 2005, ένας από τους απομακρυσμένους προγραμματιστές μας απλά ελέγχεται σε μια αλλαγή σε μια αποθηκευμένη διαδικασία που άλλαξε μια «επιλέξτε SCOPE\_IDENTITY» σε «επιλέξτε @@ ταυτότητα». Γνωρίζετε τυχόν λόγους για τους οποίους θέλετε να χρησιμοποιήσετε @@ ταυτότητα πάνω SCOPE\_IDENTITY;

 
Αιτία για τη χρήση @@ ταυτότητας και όχι SCOPE\_IDENTITY
========================================================



`@@IDENTITY`θα επιστρέψει την τελευταία τιμή ταυτότητα που εκδίδεται από την τρέχουσα περίοδο. `SCOPE_IDENTITY()`επιστρέφει την τελευταία τιμή ταυτότητα κατά την τρέχουσα περίοδο και στο ίδιο πεδίο. Συνήθως είναι το ίδιο, αλλά υποθέτουν μια σκανδάλη ονομάζεται η οποία εισάγεται κάτι κάπου λίγο πριν από την τρέχουσα κατάσταση. `@@IDENTITY`θα επιστρέψει την τιμή ταυτότητας από την `INSERT IGNORE` δήλωση της σκανδάλης, δεν είναι η δήλωση ένθετο του μπλοκ. Είναι συνήθως ένα λάθος, εκτός αν ξέρει τι κάνει.

 

Εδώ είναι [μια σύνδεση](http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/) που μπορεί να βοηθήσει στη διαφοροποίηση τους


μοιάζει με:


* **ΤΑΥΤΟΤΗΤΑ** - τελευταία ταυτότητας για τη σύνδεση
* **SCOPE\_IDENTITY** - τελευταίο ταυτότητα που δημιουργήθηκε ρητά (εξαιρούνται ενεργοποιεί)
* **IDENT\_CURRENT ( «όνομα πίνακα»)** - Τελευταία Ταυτότητα στον πίνακα, ανεξάρτητα από το πεδίο εφαρμογής ή τη σύνδεση.

 

Δεν μπορώ να σκεφτώ κανένα, εκτός αν υπήρχε μια σκανδάλη, στη συνέχεια, εισάγεται μια σειρά (ή somesuch) και πραγματικά ήθελε την ταυτότητα της σκανδάλης, εισάγεται σειρά και όχι τη γραμμή που φυσικά αλλάξει.


Με άλλα λόγια, όχι, δεν είναι πραγματικά.


* ΑΠΟΠΟΙΗΣΗ: Όχι T-SQL ειδικός :)

 

Ίσως θα πρέπει να ρωτήσετε τον κύριο του έργου λογική τους πίσω από την αλλαγή αυτή. 

 

Αν ήθελε τη σκανδάλη χρήση θα μπορούσατε να πάρετε ένα άλλο σκανδάλη προστεθεί στο είναι ο μόνος λόγος που μπορώ να καταλήξει. Ακόμα και τότε είναι επικίνδυνο και θα μπορούσε να προστεθεί ένα άλλο σκανδάλη και πάλι θα πάρετε το λάθος ταυτότητα. Υποψιάζομαι ότι ο κύριος του έργου δεν ξέρει τι κάνει. Αλλά ειλικρινά το καλύτερο πράγμα που πρέπει να κάνουμε είναι να τον ρωτήσω γιατί έκανε την αλλαγή. Θα μπορούσατε να το αλλάξετε πίσω, αλλά ο κύριος του έργου πρέπει να ξέρετε για να μην το κάνουμε αυτό και πάλι αν χρειάζεται την ταυτότητα σκανδάλη, όπως δεν μπορεί να πιάσει την επόμενη φορά.

 