| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 734 人关注过本帖
标题:这样的触发器怎么创建?
只看楼主 加入收藏
牛腩
Rank: 3Rank: 3
来 自:南宁
等 级:论坛游侠
威 望:1
帖 子:59
专家分:161
注 册:2007-6-3
收藏
 问题点数:0 回复次数:1 
这样的触发器怎么创建?

我在数据库里建立了三个表,专业表,班级表,学生表,专业表里有专业总人数,班级表里有学生总人数,现在我想当然插入一学生的时候就通过班级ID在班级表里把人数加1,然后再通过班级表里的专业ID把专业里对应的专业人数+1,请问应该怎么创建触发器呢?我试过在学生表里创建一个触发器,只触发班级人数增加的,是成功了,代码如下:
CREATE TRIGGER [TRIGGER_xs_insert] ON [dbo].[xueshen]
FOR INSERT
AS
update banji set renshu = renshu+1 where banji_id=(select bj_id from inserted)

现在我又在班级表里建立触发器,当班级表更新的时候通过专业ID向专业表里人数更新,我写的代码如下:
CREATE TRIGGER [banji_update] ON [dbo].[banji]
FOR UPDATE
AS
update zhuanye set z_renshu = z_renshu+1
where zhuanye_id=(select zy_id from inserted)

可是在分析器里运行是错误的,请问应该怎么办?

搜索更多相关主题的帖子: 触发器 
2007-06-19 12:47
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
收藏
得分:0 

update触发器不是这样用的 班级表更新的时候并没有insert操作 所以它的inserted是空的, 应该用COLUMNS_UPDATED判断。

IF (COLUMNS_UPDATED())

测试是否插入或更新了提及的列,仅用于 INSERT 或 UPDATE 触发器中。COLUMNS_UPDATED 返回 varbinary 位模式,表示插入或更新了表中的哪些列。

COLUMNS_UPDATED 函数以从左到右的顺序返回位,最左边的为最不重要的位。最左边的位表示表中的第一列;向右的下一位表示第二列,依此类推。如果在表上创建的触发器包含 8 列以上,则 COLUMNS_UPDATED 返回多个字节,最左边的为最不重要的字节。在 INSERT 操作中 COLUMNS_UPDATED 将对所有列返回 TRUE 值,因为这些列插入了显式值或隐性 (NULL) 值。

可以在触发器主体中的任意位置使用 COLUMNS_UPDATED。

bitwise_operator

是用于比较运算的位运算符。

updated_bitmask

是整型位掩码,表示实际更新或插入的列。例如,表 t1 包含列 C1、C2、C3、C4 和 C5。假定表 t1 上有 UPDATE 触发器,若要检查列 C2、C3 和 C4 是否都有更新,指定值 14;若要检查是否只有列 C2 有更新,指定值 2。

comparison_operator

是比较运算符。使用等号 (=) 检查 updated_bitmask 中指定的所有列是否都实际进行了更新。使用大于号 (>) 检查 updated_bitmask 中指定的任一列或某些列是否已更新。

column_bitmask

是要检查的列的整型位掩码,用来检查是否已更新或插入了这些列。

**********************

事实上你根本不需要2个触发器

CREATE TRIGGER [TRIGGER_xs_insert] ON [dbo].[xueshen]
FOR INSERT
AS
update banji set renshu = renshu+1 where banji_id=(select bj_id from inserted)
update zhuanye set z_renshu = z_renshu+1 where zhuanye_id=(select zy_id from banji where banji_id = (select bj_id from inserted))


2007-06-26 10:31
快速回复:这样的触发器怎么创建?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045943 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved