我想添加一个限制,我的表可以有多少项。我希望最大数量的项目是10.我希望它只有10个人在我的表中。我不希望它能够在第10个人之后添加项目。这是我的代码:
CREATE TABLE person (
name VARCHAR(233) NOT NULL,
number int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(number),
Check(number>10))
答案 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 ;