Προς το περιεχόμενο

INSERT ΣΕ MYSQL + AUTO INCREMENT


Sailsman

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

 

θα ήθελα να μου προτείνετε έναν τρόπο ώστε όταν κάνω insert σε έναν πίνακα της MySQL να μπορώ να πάρω την τιμή ενός πεδίου που έχει το flag AUTO INCREMENT, έτσι ώστε να ξέρω σε ποια τιμή αυξήθηκε το πεδίο αυτό με την εισαγωγή αυτή!!

 

Ιδέες....

 

Ευχαριστώ!

Δημοσ.

Σε java...

Βρήκα την LAST_INSERT_ID() της MySQL, αλλά θέλω να μου επιστρέφεται η τιμή κατά την εισαγωγή ώστε να μην υπάρχει περίπτωση να μεσολαβήσει άλλη εγγραφή στο ενδιάμεσο....

Δημοσ.

java code

>
ResultSetMetaData rsmd;

int value=0; // the value that we would like to get

for (int i = 1; i <= rsmd.getColumnCount(); i++)
{  // for every table column
     boolean isAutoInc = rsmd.isAutoIncrement(i); // get AutoIncrement field
     if (isAutoInc)
     {   
          rsmd.last();  // go to last record
          value =  rsmd.getInt(i);  // get the value from the last record from the autoincrement field
     }
}     

Δημοσ.

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

 

Γιατί για φανταστείτε να γίνουν δύο εγγραφές και μετά να πας στην τελευταία εγγραφή. Τότε θα πάρεις την τιμή της δεύτερης εγγραφής και της πρώτης θα την χάσεις....

Δημοσ.

For LAST_INSERT_ID(), the most recently generated ID is maintained in the server on a per-connection basis. It is not changed by another client. It is not even changed if you update another AUTO_INCREMENT column with a non-magic value (that is, a value that is not NULL and not 0). Using LAST_INSERT_ID() and AUTO_INCREMENT columns simultaneously from multiple clients is perfectly valid. Each client will receive the last inserted ID for the last statement that client executed.

 

Περισσότερα

Δημοσ.

Τέλεια...Δεν είχα προσέξει το απόσπασμα αυτό της LAST_INSERT_ID().

 

Σε ευχαριστώ πολύ doubleh που μου το επισήμανες!!!!

Αρχειοθετημένο

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

  • Δημιουργία νέου...