这可能是一个愚蠢的问题,但是可以在表中的字段中存储计数查询,这样当计数结果发生变化时,结果会自行更新吗?
Thread(ThreadID,NumMessages)
Message(MessageID,ThreadID,MessageText,PreviousMessage)
我想在添加或删除带有相应ThreadID的消息时更新Thread.NumMessages字段。我知道我可以通过使用计数查询递增/递减Thread.NumMessages字段来做到这一点
SELECT COUNT(*),FROM SCHEMA.Message WHERE ThreadID ='SOMETHREADID'
但是,无论如何设置NumMessages字段,以便在每次添加和删除时都不会明确地进行更新吗?
由于 格雷姆
答案 0 :(得分:4)
是的,您可以使用视图作为Thread表的实现。
http://dev.mysql.com/doc/refman/5.1/en/create-view.html
Create view thread_view
select
count(*) as NumMessages,
threadID
from message
group by threadID
答案 1 :(得分:1)
触发器!
你想要一个触发器。这应该可以帮助您进行搜索(知道要寻找什么是一半的战斗)。 http://www.databasedesign-resource.com/mysql-triggers.html
基本上,只要触发表上的指定事件(例如插入),就会触发触发器,并执行存储过程。
然后你的存储过程会检查以确保它关注的东西(你可以在这里添加各种逻辑),然后在MySQL执行首先触发它的原始查询之前做一些事情(增加那个值?)