Saya memiliki tes tabel yang memiliki kolom id yang kunci utama dan otomatis bertambah dan nama. Saya ingin menyisipkan catatan baru jika annd hanya jika tidak ada catatan. Misalnya
input adalah id = 30122 dan nama = john
jika ada catatan dengan id 30122 maka saya telah memperbarui kolom nama ke john, jika tidak ada catatan maka saya harus memasukkan catatan baru.
Saya bisa menggunakan 2 pertanyaan seperti
select * from test where id=30122
jika memiliki beberapa catatan maka saya bisa menggunakan update test set name='john' where id=3012
atau jika tidak memiliki catatan maka saya bisa menggunakan
insert into test(name) values('john')
Tapi saya ingin menggunakan permintaan tunggal?
Adakah yang tahu apakah itu mungkin?
sql-server
merge
upsert
SpringLearner
sumber
sumber
But I wanted to use single query?
Mengapa?MERGE
dalam versi apa pun, bahkan SQL Server 2019. Beberapa latar belakang di sini .Jawaban:
Anda bisa mencoba ini
Pendekatan lain untuk kinerja yang lebih baik adalah
dan juga membaca kebiasaan buruk ini untuk memulai awalan skema
sumber
Dengan asumsi SQL Server 2008 atau yang lebih baru, Anda dapat menggunakan
MERGE
:Meja
Pertanyaan
The
SERIALIZABLE
petunjuk diperlukan untuk operasi yang benar di bawah concurrency tinggi .Anda dapat menemukan perbandingan metode umum oleh Michael J. Swart di sini:
Mythbusting: Solusi Pembaruan / Sisipan Bersamaan
sumber