| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1099 人关注过本帖
标题:[求助]一个关于触发器的问题,好心人帮帮忙
只看楼主 加入收藏
waitray
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-7-27
收藏
 问题点数:0 回复次数:3 
[求助]一个关于触发器的问题,好心人帮帮忙
create trigger T1 on worker
for insert,update
as
if inserted.sage<1 OR updated.sage<1
begin
print 'sage must be a integer more than zero!'
Rollback transaction
end
报错原因:
服务器: 消息 107,级别 16,状态 2,过程 T1,行 4
列前缀 'inserted' 与查询中所用的表名或别名不匹配。
服务器: 消息 107,级别 16,状态 1,过程 T1,行 4
列前缀 'updated' 与查询中所用的表名或别名不匹配。
搜索更多相关主题的帖子: 触发器 好心人 服务器 updated sage 
2005-07-27 11:42
waitray
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-7-27
收藏
得分:0 
小弟是初学者,想请各位大侠帮忙指出错误的地方,有点着急
2005-07-27 11:44
EA_Games
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:539
专家分:0
注 册:2005-3-13
收藏
得分:0 
inserted,deleted表是逻辑表,存在内存中,或者说是虚拟表,不可以用作用域符号去引用。你可以这样:

create trigger T1 on worker
for insert,update
as
if (select sage from inserted)<1
begin
print 'sage must be a integer more than zero!'
Rollback transaction
end

其次,你要了解insert触发器和update触发器的原理:
insert触发器:1。向inserted表中插入一个新行的副本。
                       2。检查inserted表中的新行是否有效,确定是否要阻止该插入操作。
                       3。如果所插入的行中的值是有效的,则将该行插入到触发器表中。

update触发器:1。将原始数据行移到deleted表中。
                         2。将一个新行插入inserted表中。
                         3。计算deleted表和inserted表中的值以确定是否进行干预。

所以没有updated表。

2005-07-27 22:33
waitray
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-7-27
收藏
得分:0 
非常感谢EA_Games大哥。。。。谢谢谢谢

2005-07-28 14:55
快速回复:[求助]一个关于触发器的问题,好心人帮帮忙
数据加载中...
 
   



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

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