mysql触发器限制为id列插入的行数

时间:2018-08-16 18:10:28

标签: php mysql triggers

我希望我网站的用户可以使用我的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;

1 个答案:

答案 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