alih-alih di bawah Kode
BEGIN
INSERT INTO EmailsRecebidos (De, Assunto, Data)
VALUES (@_DE, @_ASSUNTO, @_DATA)
WHERE NOT EXISTS ( SELECT * FROM EmailsRecebidos
WHERE De = @_DE
AND Assunto = @_ASSUNTO
AND Data = @_DATA);
END
ganti dengan
BEGIN
IF NOT EXISTS (SELECT * FROM EmailsRecebidos
WHERE De = @_DE
AND Assunto = @_ASSUNTO
AND Data = @_DATA)
BEGIN
INSERT INTO EmailsRecebidos (De, Assunto, Data)
VALUES (@_DE, @_ASSUNTO, @_DATA)
END
END
Diperbarui : (terima kasih kepada @Marc Durdin karena telah menunjuk)
Perhatikan bahwa di bawah beban tinggi, ini terkadang masih gagal, karena koneksi kedua dapat lulus tes JIKA TIDAK ADA sebelum koneksi pertama mengeksekusi INSERT, yaitu kondisi balapan. Lihat stackoverflow.com/a/3791506/1836776 untuk jawaban yang bagus tentang mengapa bahkan membungkus transaksi tidak menyelesaikan ini.