所以,我有一个表A中的每个用户发送的图像时,将创建一个记录存储它被上传的时候,用户的用户名以及图像数出的所有随时间推移上传的图片Mysql的触发从一个表到另一
我需要做的是将存储每个用户的用户名上传的图片的量的第二表B中。我需要当A.
生成一个新的条目,我发现一个触发功能可以被创建,但我有一个粗略的时间发现,将适合我的需要一个例子来更新这个表B中。
有谁知道干什么我想什么办法?
所以,我有一个表A中的每个用户发送的图像时,将创建一个记录存储它被上传的时候,用户的用户名以及图像数出的所有随时间推移上传的图片Mysql的触发从一个表到另一
我需要做的是将存储每个用户的用户名上传的图片的量的第二表B中。我需要当A.
生成一个新的条目,我发现一个触发功能可以被创建,但我有一个粗略的时间发现,将适合我的需要一个例子来更新这个表B中。
有谁知道干什么我想什么办法?
只是总插入的记录上a
从当前用户NEW.userid
一个SELECT COUNT更新b
表(用户ID是你的列名或任何名义在你那里,而新是一个固定的MySQL参考您插入当前值) :
CREATE TRIGGER img_sum AFTER INSERT ON a
FOR EACH ROW SET b.total = (SELECT COUNT(*) FROM a WHERE a.userid=NEW.userid)
WHERE b.userid = NEW.userid;
从你所描述的我不认为你需要第二个表。您只需计算用户名发生的次数,即可获得用户上传的图像数量。
你可以得到数做类似的东西
SELECT COUNT(DISTINCT username) FROM table_name;
如果您仍然需要创建2个表,你可能想看看程序以及它们如何工作。
的事情是,我将清空表每一次在一段时间,因为它是一种每周比赛。你会如何推荐我这样做两张桌子? –
比方说,我们有这个情况下3个表:
- users(id, username, email ....),
- user_images(id, userId, image_num, date_uploaded)
- user_images_count(id, user_name, images_count)
的user_images_count
最初是空的。我们通过这样的查询,以填补起来:
INSERT into user_images_count(user_name, images_count)
SELECT (select username from users where ui.userId = id) as username, count(userId) as counter FROM `user_images` ui group by ui.userId;
然后,我们必须立即创建将每一个INSERT操作加工成user_images
表中的触发器。
CREATE TRIGGER `count_user_images` AFTER INSERT ON `user_images`
FOR EACH ROW begin
declare u_name tinytext default "";
set u_name = (select username from users where id = NEW.userId limit 1);
if(u_name != "") then
update user_images_count set images_count = images_count + 1 where user_name = u_name;
end if;
end
这两个查询(user_images_count履行和触发创作必须在一个事务中,逐个进行)。 我在本地数据库上创建了类似的触发器。他们工作很好。 )))
哇,我会试试 –
你的SQL语法错误;请检查与您的MySQL服务器版本相对应的手册,以便在''a –
附近使用正确的语法,请发布引发上述错误的完整查询 – RomanPerekhrest
谢谢你的答案,我会赤它 –
什么是新的参数代表什么? –
是插入的记录值的引用...即:如果您插入列名称,电话的值,您可以通过NEW.name,NEW.phone –