我希望我网站的用户可以使用我的HTML表单提交数据。但是,我希望每个用户被限制为总共5个提交。为此,我使用MySQL DML触发器将列“ um_id”限制为每个id仅五行。但是,我知道我的语法是错误的,并且我要求这里的任何人来纠正它,以便它实际上可以工作。
现在,我正在PHPMyAdmin中对其进行测试,最终它将被放置在我的PHP文件中。因此um_id将具有一个值,并与此SQL触发器串联。
CREATE TRIGGER ml_trigger
BEFORE INSERT
ON ml_character;
BEGIN
IF ( SELECT . 'um_id' . COUNT(*) > 5 ) THEN ROLLBACK;
END IF;
答案 0 :(得分:1)
类似这样的东西:
DELIMITER $$
CREATE TRIGGER ml_trigger_bi
BEFORE INSERT
ON ml_character
FOR EACH ROW
BEGIN
-- get count of existing rows with same um_id
DECLARE li_cnt BIGINT;
SELECT COUNT(*) AS cnt
FROM ml_character t
WHERE t.um_id = NEW.um_id
INTO li_cnt ;
-- if already five rows, throw error
IF li_cnt >= 5 THEN
SIGNAL '45000' SET MESSAGE_TEXT = 'Already five rows in ml_character';
END IF;
END$$
DELIMITER ;
要检查的um_id
的值将来自所插入的行;我们将该值称为NEW.um_id
。