注册 登录
编程论坛 SQL Server论坛

触发器的小问题

一个人的方向 发布于 2010-12-14 15:56, 576 次点击
在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;
3 回复
#2
aei1352010-12-15 13:29
查询时用CASE WHEN 处理下就行,感觉没必要用触发器
CREATE TRIGGER t_t_Products
ON Products
AFTER INSERT
AS
BEGIN
     UPDATE Products
     SET Remark='很贵'
     WHERE UnitPrice>20
END
#3
一个人的方向2010-12-16 12:35
这个不是触发器??
#4
juejitianya2010-12-17 09:37
程序代码:
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的值构建一个临时的字段就可以。
1