mysql 如何防止通过触发器插入到表中?

x6yk4ghg  于 2022-12-17  发布在  Mysql
关注(0)|答案(1)|浏览(431)

我不得不防止插入到表中时,行的颜色为红色超过100。这里的代码,我已经写了,只是不知道写在空白。

CREATE TRIGGER onRegisterInsert BEFORE INSERT ON table_name FOR EACH ROW
BEGIN
    DECLARE n INT DEFAULT 0;
    IF New.Colour='Red' THEN
        SELECT COUNT(*) INTO n FROM table_name WHERE Colour='Red';
        if n > 100 THEN
          ---
        END IF
    END IF
END

我想写SIGNAL SQLSTATE '45000'来阻止插入,但我不想抛出错误,因为我正在插入一个数据列表,如果我抛出错误,在此之后的数据插入也将停止。
我还想写一个after insert触发器而不是before。

DELIMITER //
CREATE TRIGGER onRegisterInsert After INSERT ON table_name FOR EACH ROW
BEGIN
    IF New.Colour='Red' THEN
        SELECT COUNT(*) INTO @count FROM table_name WHERE Colour='Red';
        IF (@count >= 100) THEN
        delete from table_name new;
        END IF;
    END IF;
END //

但是该代码也给出错误。

fjaof16o

fjaof16o1#

您可以做的一件事是在调用应用程序中使用INSERT IGNORE而不是INSERT

相关问题