大家好,像我的表结构是这样的!
表名: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