| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 576 人关注过本帖
标题:触发器的小问题
只看楼主 加入收藏
一个人的方向
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:49
专家分:143
注 册:2010-3-30
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
触发器的小问题
在products表中有属性UnitPrice和Remark,我想创建一个触发器,就是当UnitPrice中的数据大于20时,那么Remark就显示出“很贵”这两个字,我的代码如下:但是有错误,哪位帮我解决一下啊?正确的代码应该是怎么样的啊?
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
程序代码:
CREATE TRIGGER t_t_Products
AFTER INSERT ON Products
FOR EACH ROW
AS BEGIN
    IF(Products.UnitPrice>20) THEN
        Products.Remark='很贵';
    END IF;
END;
搜索更多相关主题的帖子: 触发器 
2010-12-14 15:56
aei135
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:232
专家分:1176
注 册:2009-4-6
收藏
得分:5 
查询时用CASE WHEN 处理下就行,感觉没必要用触发器
CREATE TRIGGER t_t_Products
ON Products
AFTER INSERT
AS
BEGIN
     UPDATE Products
     SET Remark='很贵'
     WHERE UnitPrice>20
END
2010-12-15 13:29
一个人的方向
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:49
专家分:143
注 册:2010-3-30
收藏
得分:0 
这个不是触发器??
2010-12-16 12:35
juejitianya
Rank: 4
等 级:业余侠客
威 望:3
帖 子:44
专家分:272
注 册:2009-9-11
收藏
得分:5 
程序代码:
create table Test(
    mID varchar(10),
    mVal integer ,
    Remarks as (case when mVal>20 then '很贵' else '' end))
   
insert into Test(mID, mVal) values('2','22')

select * from Test 
如果本身满足你在题目中,如果某个值>20,则Remarks等于“很贵”的方式,使用触发器不是很合适。可以使用计算字段实现相应的需求,我上面给了你一个范例,你可以看一看!
除此之外,如果你使用视图的话,要更灵活一些,将基本表中的remarks删除,直接在构建视图的使用根据UnitPrice的值构建一个临时的字段就可以。
2010-12-17 09:37
快速回复:触发器的小问题
数据加载中...
 
   



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

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