如何向mysql数据库添加最大项限制?

时间:2018-01-08 12:07:04

标签: mysql database mysqli

我想添加一个限制,我的表可以有多少项。我希望最大数量的项目是10.我希望它只有10个人在我的表中。我不希望它能够在第10个人之后添加项目。这是我的代码:

CREATE TABLE person (
name VARCHAR(233) NOT NULL,
number int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(number),
Check(number>10))

3 个答案:

答案 0 :(得分:2)

delimiter //   
 create trigger limit_persons before insert on person for each row
    begin
        declare count integer
        select COUNT(*) FROM person INTO count;
        if count>=10 then
            signal sqlstate '45000' set message_text = 'Limit exceeded';
        end if;
    end
//

答案 1 :(得分:0)

我建议处理软件本身的限制等问题。所以你以后可以控制它,这是一个更清洁的解决方案。但你可以尝试这个,如果你真的想在mysql中限制它:

ALTER TABLE tbl_name MAX_ROWS=10 AVG_ROW_LENGTH=nnn;

您还可以查看触发器和信号:

https://dev.mysql.com/doc/refman/5.5/en/signal.html https://dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html

答案 2 :(得分:0)

您可以设置一个计数记录的触发器(具体来说就是一个Insert触发器),如果count大于10,则不允许插入操作。

以下代码对您有所帮助,

DELIMITER $$

CREATE TRIGGER LimitRowCountTrigger
BEFORE INSERT
ON person
FOR EACH ROW
BEGIN
  SELECT COUNT(*) INTO @cnt FROM person;
  IF @cnt > 10 THEN
    CALL sth(); -- raise an error
  END IF;
END
$$

DELIMITER ;