1

如果我想限制此表中每个用户的条目数:

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;

这个限制可以改变,我将它存储在另一个名为设置的表中。

我应该先 SELECT 而不是 php 比较而不是 INSERT。还是有一种机制可以直接在 INSERT 查询中执行此类操作?

4

1 回答 1

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/

于 2013-10-27T19:24:57.073 回答