我不得不防止插入到表中时,行的颜色为红色超过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 //
但是该代码也给出错误。
1条答案
按热度按时间fjaof16o1#
您可以做的一件事是在调用应用程序中使用
INSERT IGNORE
而不是INSERT
。