sql-server-2008-r2 – 定义计算列引用另一个表

我有两个数据库表,Team(ID,NAME,CITY,BOSS,TOTALPLAYER)和
玩家(ID,TEAMID,AGE),两个表之间的关系是一对多,一个团队可以有很多玩家.

我想知道有没有办法在Team表中定义TOTALPLAYER列?

例如,如果有10个玩家的TEAMID是1,那么Team表中ID为1的行的TOTALPLAYER列的值为10.如果我添加了一个玩家,则TOTALPLAYER列的值上升到11,我不需要要显式赋值给它,让它由数据库生成.有谁知道如何实现它?

Thx提前.

顺便说一句,数据库sql Server 2008 R2

解决方法

是的,你可以这样做 – 你需要一个函数统计团队的玩家,并在计算列中使用它:
CREATE FUNCTION dbo.CountPlayers (@TeamID INT)
RETURNS INT 
AS BEGIN
    DECLARE @PlayerCount INT

    SELECT @PlayerCount = COUNT(*) FROM dbo.Player WHERE TeamID = @TeamID

    RETURN @PlayerCount
END

然后定义您的计算列:

ALTER TABLE dbo.Team
ADD TotalPlayers AS dbo.CountPlayers(ID)

现在,如果您选择,则每次调用函数,对于所选的每个团队.该值不会在Team表中保留 – 每次从Team表中选择时都会动态计算.

由于它的值没有持久存在,问题实际上是:它是否需要是表上的计算列,还是只需要使用存储的函数来计算播放器的数量,如果需要的话?

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03