创建了几张表,其中有一张表是课程表,里边包括:课程号(主码),课程名,课时,学分。
现在想设计一个触发器使,作用是限制开设的课程总学分必须在0到100之间
请问这个触发器该怎么设计,谢谢。
不用触发器,用约束行了
SQL code:
alter table 课程表
add constraint ck check(学分 between 0 and 100)
可以用check约束
如果课程号唯一,用约束就可以了。
抱歉,我刚才没有说清楚问题。每个开设的课程有相应的学分,比如课程1是1学分,现在要设计一个触发器使得这些课程的学分总和限制在0到100之间
SQL code:
create table 课程表(学分 int)
create function f_check()
returns int
as
begin
declare @i int
select @i=sum(学分) from 课程表
return @i
end
alter table 课程表
add constraint ck check(dbo.f_check() between 0 and 100)
insert 课程表 select 90
/*
服务器: 消息 547,级别 16,状态 1,行 1
INSERT 语句与 CHECK 约束"ck"冲突。该冲突发生于数据库"master",表"dbo.课程表"。
语句已终止。
*/
alter table 课程表
add constraint ck check(ing
后面是什么
相关问答:
从数据库中查询一张表的数据
select 部门,姓名 from tb
如何才能生成下面的xml格式
XML code:
<folder state="unchecked" label="全部">
<folder state="unchecked&qu ......
我觉得mysql和sqlserver有共同的地方:
有个问题是关于表的锁问题:
进程A 进程B
select * from user where id in lock share mode(共享锁)
&nb ......
有这样一条SQL
Select Get_Costtaxrate(col1), Get_Tcostvalue(col1) from a
其中Get_Costtaxrate、Get_Tcostvalue都是函数,这两个函数里面都是查找一个大表,Get_Tcostvalue还需要调用Get_C ......
现在有一个部门表dept(部门名称,部门号。。)有一个人员表emp(姓名,人员编号,职位,薪资,部门)
emp表中的内容是这样的:
a 1 工程师 3000 软件部
b 2 普通员工 2000 硬件部
c 3 工程师 4000 硬件部
d ......