读书人

触发器的有关问题

发布时间: 2012-01-30 21:15:58 作者: rapoo

触发器的问题
学生表
学号 姓名 班级号
1 a 001
2 b 001

科目表
科目号 科目 班级号
11 数据库 001


成绩表
科目号 学号 成绩

*******************************
当我在科目表里插入(11,数据库,001)之后,要求在成绩表里插入科目号和对应班级中的全部学号,能否帮我写这样的一个触发器啊,急!!!




[解决办法]
create trigger aa on 科目表 after insert as
insert 成绩表 select A.科目号,B.学号,null
from inserted A left join 学生列 B
on A.班级号=B.班级号
[解决办法]
create table 学生表(学号 int identity(1,1) primary key , 姓名 varchar(20) null,班级号 varchar(20) null)
create table 科目表(科目号 int identity(1,1) primary key ,科目 varchar(20) null ,班级号 varchar(20) null)
create table 成绩表(科目号 int null, 学号 int null,成绩 numeric(20,6) null)
insert into 学生表(姓名,班级号) select 'ivan ', '001 ' union all select 'kevin ', '002 ' union all select 'casey ', '003 '
insert into 科目表(科目,班级号) select '语文 ', '001 ' union all select '数学 ', '002 ' union all select '英语 ', '003 '
go
create trigger ti_course on 科目表
for insert
as
begin
insert into 成绩表(科目号,学号,成绩) select
inserted.科目号,学生表.学号,0.00 from inserted left join 学生表 on inserted.班级号=学生表.班级号


end


select * from 成绩表
select * from 学生表

select * from 科目表
[解决办法]
create trigger tInsert on 科目
for insert
as
declare @a int
declare @b varchar(20)
select @a=科目号,@b=班级号 from inserted
insert 成绩(科目号,学号)
select @a,学号
from 学生
where 班级号=@b
go

读书人网 >SQL Server

热点推荐