学生选课表:学号SNO、课程号CNO、课程成绩Grade.
--约束:
--1.课程成绩介于0至100之间
--2.修改/删除某个学生时,同时修改/删除该学生对应选课信息
--3.修改某门课程时,同时修改该门课程的对应选课信息;
--4.删除某门课程时,如果已有学生选修该门课程,则不能执行该删除操作;
创建一个触发器,当修改学生课程成绩时,自动将相关信息写入GradeChange表。
--约束:
--1.课程成绩介于0至100之间
--2.修改/删除某个学生时,同时修改/删除该学生对应选课信息
--3.修改某门课程时,同时修改该门课程的对应选课信息;
--4.删除某门课程时,如果已有学生选修该门课程,则不能执行该删除操作;
创建一个触发器,当修改学生课程成绩时,自动将相关信息写入GradeChange表。
2、3:有外键的话做级联更新和级联删除
4:这个做了级联的话就可以实现了。
总体来说,你那些约束没必要做触发器。做了反而影响性能。
CREATE TRIGGER Update_Student ON Student
AFTER UPDATE
AS
INSERT INTO GradeChange
SELECT *
FROM INSERTED
AFTER UPDATE
AS
INSERT INTO GradeChange SELECT * FROM INSERTED
学生选课表:学号SNO、课程号CNO、课程成绩Grade.
--约束:
--1.课程成绩介于0至100之间(检查约束就能搞定)
--2.修改/删除某个学生时,同时修改/删除该学生对应选课信息(级联删除 更新就可以了)
--3.修改某门课程时,同时修改该门课程的对应选课信息;(级联更新)
--4.删除某门课程时,如果已有学生选修该门课程,则不能执行该删除操作;(把课程表的课程号设为主键
选课表的课程号设为外间 利用外键确保数据的引用完整性即可)
至于触发器 我想自己动动脑子就能解决吧 有什么不懂得再来问 不帮学生做题
学生选课表:学号SNO、课程号CNO、课程成绩Grade.
--约束:
--1.课程成绩介于0至100之间(检查约束就能搞定)
--2.修改/删除某个学生时,同时修改/删除该学生对应选课信息(级联删除 更新就可以了)
--3.修改某门课程时,同时修改该门课程的对应选课信息;(级联更新)
--4.删除某门课程时,如果已有学生选修该门课程,则不能执行该删除操作;(把课程表的课程号设为主键 选课表的课程号设为外间 利用外键确保数据的引用完整性即可)
至于触发器 我想自己动动脑子就能解决吧 有什么不懂得再来问 不帮学生做题--创建学生信息表
if OBJECT_ID('StuInfo') is not null
drop table StuInfo
go
create table StuInfo
(
StuId varchar(5) primary key,
StuName nvarchar(10),
StuSex nvarchar(1) check(StuSex in('男','女')),
StuAge smallint,
Tel varchar(11)
)
go
--创建课程表
if OBJECT_ID('CouInfo') is not null
drop table CouInfo
go
create table CouInfo
(
CouId varchar(5) primary key,
CouName nvarchar(20),
CouHours decimal(4,1)
)
go
--学生选课表:
if OBJECT_ID('CouChose') is not null
drop table CouChose
go
create table CouChose
(
Id int identity(1,1),
StuId varchar(5)
foreign key references StuInfo(StuId) on delete cascade on update cascade,
CouId varchar(5) foreign key references CouInfo(CouId) on update cascade,
CouScoer int check(CouScoer between 0 and 100))
go--创建触发器
if OBJECT_ID('tri_test') is not null
drop trigger tri_test
go
create trigger tri_test on CouChose
for update
as
insert GradeChange select * from INSERTED
go
2`3都可以用级联!在论坛搜搜自己基本可以解决!
4 如果一定要写触发器,就用一楼的吧!
我使用的教材是《数据库系统概论》(第4版),课本上定义触发器的一般格式为:
create trigger<触发器名>
{before|after} <触发事件> on <表名>
for each {row|statement}
[when <触发条件>]
<触发动作体>
学的真郁闷!
能不能给我推荐几本书看看,谢谢啦!