现有两个表相关联,一个学生表T_Student,一个成绩表T_Score,关联字段为学生ID,我想在删除学生时,把成绩表中关于学生的信息也删掉,存储过程为:
Create procedure DelStudent
@StuID @varchar(10)
as 
Delete From T_Score Where StudentID = @StuID
触发器是这样写的:
Create trigger DelScore
on T_Student
for delete
as
Exec @DelStudent @StuID = T_Student.ID
但是不对,生成触发器时产生错误,说是最后一行“.”附近产生错误,谁能告诉我触发器该怎样写呀?谢谢!!

解决方案 »

  1.   

    Exec @DelStudent T_Student.ID
    这一句直接这样试试
      

  2.   

    方法1:
    Create procedure DelStudent( @StuID varchar(10))
    as 
    Delete From T_Score Where StudentID = @StuID;
    DELETE FROM T_student where sutdenid=@stu_id;
    方法2:
    触发器是这样写的:
    跟你的那样,但你的语法,写法错误,去翻书。
      

  3.   

    改触发器:
    Create trigger DelScore
    on T_Student
    for delete
    as
    declare @StuID (类型)
    select @StuID=T_Student.ID from 表
    Exec @DelStudent @StuID
      

  4.   

    将T_Student的ID和T_Score中的ID关联起来,1对1的关系,删除学生时,成绩中会自动删除。
      

  5.   

    可以通过简单的关联即可。例如:
    create table  table1(
    studentid int primary key,Student_name varchar(8))create table  table2(
    studentid  int foreign key reference table1(studentid) on delete)
    这样当删除了table1中的某一条记录,table2中相对应的记录就会自动删除。
      

  6.   

    也可以通过触发器完成。
    if exists(select name from sysobjects where name='trigger_delete' and type='TR')
    drop trigger Course_Class_trigger_delete
    go
    create trigger trigger_delete
    on table1
    for delete 
    as
    declare @name varchar(30)
    select @name=student_id from deleted
    delete table2 where student_id=@name