我们有一个表格,我们将每个用户的行数限制为一定数量。在插入之前,我们检查用户是否已超过存储容量(行数),然后根据需要插入。例如,
select count(id) from items where user=123;
说,如果计数< 10,
insert into items set user=123, a=xyx;
但是,这种方法需要两个查询。有没有办法可以在一个查询中完成。
由于
答案 0 :(得分:0)
您采取的任何方法都需要两次查询。无论是在触发器中还是在应用程序代码中执行此操作都是一个选择问题。
如果您使用方法,则在items(user)
上添加索引。这样可以很方便地计算行数。
另一种方法是在每个项目的用户表中增加一个值。因此,当用户插入项目时,请增加users.itemcount
。但请记住,在删除项目时减少计数。
答案 1 :(得分:0)
如果您只想在代码中进行1次查询,可以尝试使用此处所述方法的条件插入MySQL Conditional Insert