我刚开始使用SQL并遇到了问题。
在我的数据库中,我目前有两个表,电影院和剧院。我正在尝试在Cinemas表中创建一列“#Theatres#”,该表计算着Cinemas表中具有与Cinemas表中的Cinema相同的CinemaID(外键)的Theaters表中的剧院数量。我将其用作SQL查询:
SELECT cinemas.CinemaID,Town,COUNT(*) AS '# of Theatres' FROM cinemax.cinemas,cinemax.theatres WHERE cinemas.CinemaID=theatres.CinemaID GROUP BY cinemas.CinemaID;
但是想知道是否有可能在Cinemas表中创建一列,该列会自动执行上述查询并将值插入到每一行中。
这将是一个非常小的数据库,因此速度并不是真正的问题,我只想学习如何制作这样的计算列(即使可能的话)。
有可能的。但您不应该这样做。
这就是所谓的非规范化-通常根本不是一个好主意。
但是有时候,由于某些奇怪的原因,您可能绝对需要对某些东西进行非规范化处理(您的示例远没有充分的理由)。在这种情况下,您需要添加触发器代码以在系统中任何可能影响结果的变化发生时自动管理值。