Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bisakah saya memperbarui nilai INT + 1 dan mengembalikan nilai baru?

Jawaban sederhana - tidak, itu tidak mungkin.

Jawaban yang lebih panjang, ya, jika Anda menggunakan prosedur tersimpan yang meningkatkan nilai untuk ID yang ditentukan, mengambil nilai baru dan mengembalikannya.

Saya baru saja menguji ini di bawah MySQL 5.1.59:

CREATE PROCEDURE increment (IN uniqid VARCHAR(255))
BEGIN
   UPDATE `table` SET number = number + 1 WHERE id = uniqid;
   SELECT number FROM `table` WHERE id = uniqid;
END

Penggunaan:

CALL increment(uniqid)

Jika beberapa akses simultan dimungkinkan, Anda mungkin ingin LOCK tabel terlebih dahulu untuk memastikan atomisitas operasi - MySQL tampaknya tidak mengizinkan prosedur tersimpan untuk mengunci tabel sendiri.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LOAD DATA tidak diperbolehkan dalam prosedur tersimpan

  2. Sisipan batch menggunakan SQL Asli di Hibernate

  3. konvensi penamaan mysql

  4. Membatasi pengguna tertentu hanya untuk data mereka di tabel umum

  5. Sphinx vs. MySql - Cari melalui daftar teman (efisiensi/kecepatan)