Dengan MySQL, jika saya memiliki bidang, tentu saja login, bagaimana cara memperbarui bidang tersebut dengan 1 dalam perintah sql?
Saya mencoba membuat kueri INSERT, yang membuat nama depan, nama belakang dan login. Namun jika kombinasi firstName dan lastName sudah ada, tambahkan login dengan 1.
jadi meja mungkin terlihat seperti ini ..
firstName----|----lastName----|----logins
John Jones 1
Steve Smith 3
Saya mengejar sebuah perintah yang ketika dijalankan, akan memasukkan orang baru (yaitu Tom Rogers) atau kenaikan login jika John Jones adalah nama yang digunakan ..
INSERT
, bukanUPDATE
. Jika ingin melakukan penyisipan, Anda harus mendapatkan maks dan menambahkan 1 ke dalamnya.Jika Anda dapat dengan aman membuat (firstName, lastName) KUNCI UTAMA atau setidaknya memasukkan kunci UNIQUE pada mereka, maka Anda bisa melakukan ini:
Jika Anda tidak bisa melakukan itu, maka Anda harus mengambil apa pun kunci utama itu terlebih dahulu, jadi saya tidak berpikir Anda bisa mencapai apa yang Anda inginkan dalam satu permintaan.
sumber
ON DUPLICATE KEY UPDATE
replikasi tidak sepenuhnya aman!Anda tidak mengatakan apa yang Anda coba lakukan, tetapi Anda mengisinya dengan cukup baik di komentar untuk jawaban yang lain. Saya pikir Anda mungkin mencari kolom kenaikan otomatis
maka tidak diperlukan kode khusus pada saat memasukkan. Hanya
API MySQL memiliki fungsi untuk memberi tahu Anda apa yang dibuat userid ketika Anda menjalankan pernyataan ini dalam kode klien.
sumber
Saya tidak ahli dalam MySQL tetapi Anda mungkin harus melihat pemicu misalnya SEBELUM INSERT. Di pemicu, Anda dapat menjalankan kueri pemilihan pada tabel asli Anda dan jika menemukan sesuatu, perbarui saja baris 'login' daripada memasukkan nilai baru. Tetapi semua ini tergantung pada versi MySQL yang Anda jalankan.
sumber
Ini lebih merupakan catatan kaki untuk sejumlah jawaban di atas yang menyarankan penggunaan
ON DUPLICATE KEY UPDATE
, WASPADALAH bahwa ini TIDAK selalu replikasi aman, jadi jika Anda berencana untuk tumbuh melampaui satu server, Anda akan ingin menghindari ini dan menggunakan dua pertanyaan , satu untuk memverifikasi keberadaan, dan kemudian kedua untuk baikUPDATE
ketika berturut-turut ada, atauINSERT
ketika tidak.sumber