Nah, masalahnya adalah MySQL tidak memiliki yang setara dengan STOP ACTION
memerintah. Jadi pada dasarnya, pekerjaan di sekitar cukup kotor:
Salah satu caranya adalah Anda dapat melanggar batasan di dalam pemicu untuk memunculkan kesalahan dan membatalkan penyisipan:
CREATE TABLE stop_action (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(35),
UNIQUE KEY (id, name)
);
INSERT INTO stop_action (1, 'Assert Failure');
Kemudian, di pemicu, coba saja:
INSERT INTO stop_action (1, 'Assert Failure');
Manfaatnya, adalah bahwa kesalahan yang dikembalikan akan menjadi kesalahan kunci duplikat, dan teksnya akan menyertakan "Assert Failure".
Jadi pemicu Anda akan menjadi:
delimiter |
CREATE TRIGGER asser1_before BEFORE INSERT ON test1
FOR EACH ROW BEGIN
SELECT count(*) INTO test FROM (select count(*)
from Video
where Date >= DATE_SUB(current_date(),INTERVAL 1 YEAR )
&& Date<=current_date()
group by User
having count(*) > 200);
IF test != 0 THEN
INSERT INTO stop_action (1, 'Assert Failure');
END IF;
END;
|
delimiter ;
Sekarang, Anda harus melakukan ini sebelum UPDATE
juga, jika tidak, Anda dapat memperbarui tanggal menjadi status yang tidak valid. Tetapi sebaliknya, setidaknya itu akan membantu Anda memulai...