数据库中某个属性值的动态改变

来源:百度知道 编辑:UC知道 时间:2024/05/25 03:32:49
有两个表,一个表中有字段
article表:article_id,channel_id(外码)
另一个表:
channel表:channel_id(主码),doc_count,我想让doc_count中的值等于第一个表中统计的这个channel_id下的article总量
能否请教高手该怎么做,请勿提触发器,太麻烦了。。。。我想实现想excel中可以对某个字段设置函数,然后值能够动态的改变,行吗?

没有什么好办法,就我目前的水平 除了触发器好像没有别的办法,麻烦是麻烦了点,但是一劳永逸,如果又需要可以hi我,SqlServer里面麻烦些,oracle中很方便的可以实现。

---
以上,希望对你有所帮助。

楼主,像你这个问题必须要用触发器来实现,而且insert、delete和update的属性都要考虑到

以上,希望对你有所帮助

我也建议使用触发器。

--我想实现想excel中可以对某个字段设置函数,然后值能够动态的改变,行吗?
这个可以呀。

如果只是这么简单的应用,而且数据量不大的话,本身就不应该分表,而应该用视图。

CREATE VIEW channel AS
SELECT channel_id, count(*) AS doc_count
FROM article
GROUP BY channel_id

如果数据量太大,或者channel的访问频率非常高,又或者是更复杂的应用,的确是应该使用触发器的。

这么久还不结贴啊,看来楼主是真不愿意用触发器,呵呵.
其实最合适的方案还是用触发器.

本来想考虑用'计算列',可数据来自2个不同的表,所以放弃.

那么只有用视图了.
在楼主现有的2个表的基础上,建立如下视图:
create view v_channel as
(
select a.channel_id, doc_count=COUNT(*)
from channel a,article b
where a.channel_id=b.channel_id
group by a.channel_id
)
go
那么,对article表的任意insert,delete,update操作,视图都会自动更新.
以后要看统计数量doc_count就直接从视图中读取,而不要再去访问channel基表了.

不用触发器也行,只要你保证你所有的代码中,涉及对这2个表