Bagaimana untuk Mengemas kini Baris dalam Jadual yang Sama selepas Memasukkan Baris Baharu dalam MySQL?

Linda Hamilton
Lepaskan: 2024-10-30 06:58:18
asal
794 orang telah melayarinya

How to Update a Row in the Same Table after Inserting a New Row in MySQL?

MySQL Trigger: Menetapkan Nilai untuk Baris BARU dan Mengemas kini Satu Lagi dalam Jadual Yang Sama

Dalam MySQL, pencetus ialah mekanisme berkuasa yang membolehkan anda melakukan tindakan tertentu apabila peristiwa tertentu berlaku dalam jadual. Satu kes penggunaan biasa adalah untuk menetapkan nilai untuk baris yang baru dimasukkan (BARU) sambil mengemas kini baris lain dalam jadual yang sama. Walau bagaimanapun, ralat biasa boleh berlaku semasa mencuba operasi ini:

RALAT 1442: Tidak dapat mengemas kini jadual 'pecah' dalam fungsi/pencetus tersimpan kerana ia sudah digunakan oleh pernyataan yang menggunakan fungsi/pencetus tersimpan ini.

Ralat ini timbul kerana pencetus tidak boleh mengemas kini jadual yang sama di mana ia dicetuskan. Untuk mengatasi had ini, ikut pendekatan alternatif ini:

Menggunakan Prosedur Tersimpan:

Daripada menggunakan pencetus, buat prosedur tersimpan yang mengendalikan operasi pemasukan dan kemas kini. Berikut ialah contoh:

<code class="sql">DELIMITER $$
CREATE PROCEDURE split_before_ins(IN startDate DATE, IN endDate DATE, IN tcOfficeFee DECIMAL, IN globalFee DECIMAL)
BEGIN
  -- Insert a new row with the provided parameters
  INSERT INTO im.split (startDate, endDate, tcOfficeFee, globalFee)
  VALUES (startDate, endDate, tcOfficeFee, globalFee);
  
  -- Update the previous row's endDate
  UPDATE im.split
  SET endDate = DATE_SUB(startDate, INTERVAL 1 DAY)
  WHERE procKey = (SELECT procKey FROM im.split ORDER BY procKey DESC LIMIT 1)
  AND endDate = '20501231';
END$$
DELIMITER ;</code>
Salin selepas log masuk

Penggunaan Prosedur:

Untuk menggunakan prosedur tersimpan, laksanakan yang berikut:

<code class="sql">CALL split_before_ins('2023-01-01', '2024-12-31', 10.00, 100.00);</code>
Salin selepas log masuk

Prosedur tersimpan ini pendekatan membolehkan anda melaksanakan operasi yang diingini dalam konteks transaksi tunggal, mengelakkan ralat yang dihadapi apabila menggunakan pencetus untuk mengemas kini jadual yang sama dari mana ia dipanggil.

Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Baris dalam Jadual yang Sama selepas Memasukkan Baris Baharu dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!