ALTER   TRIGGER trig_delete_OfEmployee ON
view_empleey
INSTEAD OF delete
AS
BEGIN
declare @UName varchar(15)
--下面这一行是什么意思?能详解一下吗?还有触发器是怎样执行的?
select @UName=姓名 from deleted
--login_name=@UName 是什么意思?
delete from tb_login where login_name=@UName
delete from tb_employee where employee_name=@UName
enddelete from view_empleey where 姓名='" + this.txtName.Text.Trim().ToString() 

解决方案 »

  1.   

    触发器里有两个临时表,
    一个是inserted表,就是刚刚更新的新记录
    一个是deleted 表,被更新的旧记录.select @UName=姓名 from deleted 这个就是把将要被更新的旧数据在更新之前取出来,放到一个变量里.
      

  2.   

    --下面这一行是什么意思?能详解一下吗?还有触发器是怎样执行的? 
    select @UName=姓名 from deleted 
    --login_name=@UName 是什么意思? 
    delete from tb_login where login_name=@UName deleted 是触发器创建的零时表
    @UName=姓名变量赋值
    where login_name=@UName 条件筛选
      

  3.   

    1:触发器在设定的事件发生时触发包括:
    对指定表格的插入、删除、更新等。即:你可以设置对某一个表格在发生了更新或者删除或者插入之后的一个触发器,这个触发器在发生之后被立刻执行,并且在触发器中可以使用产生这一事件的数据行(插入的或者更新的或者删除的行)。2:这一行的语句正是我上面说的“使用产生这一事件的数据行”。
    它的意思是从刚才被删除的这一行中,取出姓名这一列的数据放到@UName变量中。
    select @UName=姓名 from deleted 
    然后使用@UName变量,删除相关表中的数据。