如果我想限制此表中每个用户的条目数:
CREATE TABLE `connections` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) unsigned NOT NULL,
`word_id` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `No duplicates` (`user_id`,`word_id`),
KEY `word_id` (`word_id`),
CONSTRAINT `connections_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `connections_ibfk_2` FOREIGN KEY (`word_id`) REFERENCES `words_en` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
此限制可以更改,我将其存储在另一个名为settings的表中。
我应该首先选择SELECT而不是执行php比较而不是INSERT。或者是否存在直接在INSERT查询中执行此类操作的机制?
答案 0 :(得分:1)
DELIMITER $$
create
trigger `some trigger` AFTER INSERT
on table
for each row begin
if (select count(id) from someothertable)>=100 then
delete from table WHERE id = NEW.id -99;
end$$
DELIMITER ;
我担心我不能深入研究,我认为如果有足够的时间进行研究,我可以做到这一点,但你最好还是要求更多人知情。这是我的半触发器,没有经过测试。
您可以使用mysql中的Create Event。http://www.sitepoint.com/how-to-create-mysql-events/