各位高手好,请问我可以在SQL SERVER里设置一个约束来控制一个表里的字段的值的总和不超过某值吗?

大家好,像我的表结构是这样的!

表名:tb_gradestandard
列名 数据列型 长度 允许空值
gs_id int 4
gs_standard char 20
gs_percent float 8
gs_memo char 100

我想控制gs_percent输入的值是大于○且小于100,这个我用约束实现了。我现在就想

控制这个sum(gs_percent)的总值不能超过100我不知道这是不是可以设计一个约束来?还请高手指点!

---------------------------------------------------------------

没办法。不过可以通过触发器来做
---------------------------------------------------------------

declare @aa int
select set @aa=sum(gs_percent) from tb_gradestandard oderby gs_id
---------------------------------------------------------------

pengdali(dali)“说”得没有错:
尽管有多条记录,但是因为有SUM()所以就成了一条记录了:)
除非你有GROUP BY
select @aa=sum(gs_percent) from tb_gradestandard 本身没有问题
在此句上加 order by ...没什么意思;

另外oderby “写”错了

---------------------------------------------------------------

用触发器吧?
增改在一个事务中处理,由触发器判断是否超过条件。
如超过,用raiserror返回错误提示,并事务回滚。
---------------------------------------------------------------

具体的说就是order 与by 之间要有空格。同时它也没用!

类似下面:

create trigger tri_test on tb_gradestandard
for insert,update,delete
as
begin
declare @aa int
select @aa=sum(gs_percent) from tb_gradestandard
if @aa>100
rollback
end

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus