SQL中创建触发器,要求插入的值不能小于表W中的值,下面这个写法无论插入什么都失败,求解啊!!!

createtriggertonwforinsertasif(selectmax(sage)fromworker)>=(selectsagefrominserted)be... create trigger t on w for insert
as
if(select max(sage) from worker)>=(select sage from inserted)
begin
print'年龄sage必须大于0,插入失败'
rollback transaction
end
展开
 我来答
mengjiewoai
2011-12-15 · TA获得超过190个赞
知道小有建树答主
回答量:102
采纳率:0%
帮助的人:122万
展开全部
你这样做,触发器是你插入完成之后再触发的,也就是说你这条记录已经插进去了,
如果你刚刚插入的是最大值,(select max(sage) from worker)=(select sage from inserted)
如果你刚刚插入的不是最大值,(select max(sage) from worker)>(select sage from inserted)
所以你的条件始终是成立的,所以都是插入失败。
更多追问追答
追问
我是从三种情况来试的,大于的,小于的,等于的,结果是年龄sage必须大于0,插入失败'
追答
if(select max(sage) from worker)>=(select sage from inserted)
条件改一下,改成
if(select max(sage) from worker where id !=(select id from inserted))>=(select sage from inserted)
语句中的id是表的唯一键的字段名,这样试试,
长朦
2011-12-15 · TA获得超过249个赞
知道小有建树答主
回答量:500
采纳率:0%
帮助的人:239万
展开全部
create trigger t on w for insert
as
declare a int,b int
select a=max(sage) from worker
select b=sage from inserted
if(a>=b)
begin
print '年龄sage必须大于0,插入失败'
rollback
end
追问
我实践了你的方法,不行呢,结果还是一样的无法插入

参考资料: http://www.uol123.com/

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式