关于SQL触发器创建的问题学生选课表:学号SNO、课程号CNO、课程成绩Grade.--约束:--1.课程成绩介于0至100之间
关于SQL触发器创建的问题 学生选课表:学号SNO、课程号CNO、课程成绩Grade. --约束: --1.课程成绩介于0至100之间 --2.修改/删除某个学生时,同时修改/删除该学生对应选课信息 --3.修改某门课程时,同时修改该门课程的对应选课信息; --4.删除某门课程时,如果已有学生选修该门课程,则不能执行该删除操作; 创建一个触发器,当修改学生课程成绩时,自动将相关信息写入GradeChange表。[最优解释]
学生选课表:学号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[其他解释] 约束1:可以在列上做个约束,没必要弄触发器
2、3:有外键的话做级联更新和级联删除
4:这个做了级联的话就可以实现了。
总体来说,你那些约束没必要做触发器。做了反而影响性能。
CREATE TRIGGER Update_Student ON Student AFTER UPDATE AS INSERT INTO GradeChange SELECT * FROM INSERTED [其他解释] CREATE TRIGGER Update_Grade ON Student AFTER UPDATE AS INSERT INTO GradeChange SELECT * FROM INSERTED [其他解释] 如果按你发的题目,我更容易理解成前四个是在建表或建表后建约束,最后才是写个触发器
[其他解释] 学生选课表:学号SNO、课程号CNO、课程成绩Grade. --约束: --1.课程成绩介于0至100之间(检查约束就能搞定) --2.修改/删除某个学生时,同时修改/删除该学生对应选课信息(级联删除 更新就可以了) --3.修改某门课程时,同时修改该门课程的对应选课信息;(级联更新) --4.删除某门课程时,如果已有学生选修该门课程,则不能执行该删除操作;(把课程表的课程号设为主键 选课表的课程号设为外间 利用外键确保数据的引用完整性即可) 至于触发器 我想自己动动脑子就能解决吧 有什么不懂得再来问 不帮学生做题
[其他解释] 引用: 引用: 如果按你发的题目,我更容易理解成前四个是在建表或建表后建约束,最后才是写个触发器 题目信息就这么多,建完表后怎么建约束,你写出来,我参考一下 1.ADD CONSTRAINT chk_Person CHECK (成绩>=0 AND 成绩<=100)(新建表时建更方便)
2`3都可以用级联!在论坛搜搜自己基本可以解决!
4 如果一定要写触发器,就用一楼的吧!
[其他解释] 实验平台是在SQL Server2000上进行。
学的真郁闷!
能不能给我推荐几本书看看,谢谢啦!
[其他解释] statement}
[when <触发条件>]
<触发动作体>
[其他解释] 引用: 引用:SQL code?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657学生选课表:学号SNO、课程号CNO、课程成绩Grade.--约束:--1.课程成绩介于0至100之间(…… 怎么还是第四版啊?我07年的时候用的就是第四版,这本书只有sql iso的定义,SQLServer不是全部都符合iso的。
[其他解释] 引用: 约束1:可以在列上做个约束,没必要弄触发器 2、3:有外键的话做级联更新和级联删除 4:这个做了级联的话就可以实现了。 总体来说,你那些约束没必要做触发器。做了反而影响性能。 SQL code?123456CREATE TRIGGER Update_Student ON Student AFTER UPDATE AS INSERT INT…… 题目要求这么做啊,不符合要求拿不到分数啊能不能写个符合要求的啊,最好旁边弄个解释。我是新手,刚学,看的不是太明白
[其他解释] 引用: SQL code?1234CREATE TRIGGER Update_Grade ON Student AFTER UPDATE AS INSERT INTO GradeChange SELECT * FROM INSERTED 先谢谢啦!跟楼上的一样哈,语句格式最好规范一点,缩进得当,这样的读起来更容易理解。我是新手,不当之处还望见谅
[其他解释] 你那4个约束都要在一个触发器里面全部实现?
[其他解释] 引用: 你那4个约束都要在一个触发器里面全部实现? 应该是吧。题目就这么出的,我也不太清楚出题人什么意思
[其他解释] 根据我的理解,前三项没必要也不适合在触发器里面实现。非要放到触发器的话就要做4个if/else ,触发器我不喜欢用,所以也不熟,只能帮到这里了,等别人来补充吧
[其他解释] 等别人来补充吧
[其他解释] 引用: 根据我的理解,前三项没必要也不适合在触发器里面实现。非要放到触发器的话就要做4个if/else ,触发器我不喜欢用,所以也不熟,只能帮到这里了,等别人来补充吧 谢谢!
[其他解释] 引用: 如果按你发的题目,我更容易理解成前四个是在建表或建表后建约束,最后才是写个触发器 题目信息就这么多,建完表后怎么建约束,你写出来,我参考一下
[其他解释] 楼上回复的好详细
[其他解释] 引用: SQL code?1234567891011学生选课表:学号SNO、课程号CNO、课程成绩Grade.--约束:--1.课程成绩介于0至100之间(检查约束就能搞定)--2.修改/删除某个学生时,同时修改/删除该学生对应选课信息(级联删除 更新就可以了)--3.修改某门课程时,同时修改该门课程的对应选课信息;(级联更新)--4.删除某门课程时,如果已有学生选修该门课程,……
[其他解释] after} <触发事件> on <表名>
for each {row
[其他解释] 引用: SQL code?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657学生选课表:学号SNO、课程号CNO、课程成绩Grade.--约束:--1.课程成绩介于0至100之间(检查约束就能搞定)--2.修改/删除某个学…… 这作业做的稀里糊涂。
我使用的教材是《数据库系统概论》(第4版),课本上定义触发器的一般格式为:
create trigger<触发器名>
{before
[其他解释] 引用: 实验平台是在SQL Server2000上进行。 学的真郁闷! 能不能给我推荐几本书看看,谢谢啦! 换2008,推荐《SQLServer 2005 技术内幕》,你的水平先看第一本吧