to cywarson(阿胜):
那我能能将其他表的字段值赋给触发器的变量吗?

解决方案 »

  1.   

    触发器使用
    可以定义一个无论何时用INSERT语句向表中插入数据时都会执行的触发器。 
    当触发INSERT触发器时,新的数据行就会被插入到触发器表和inserted表中。inserted表是一个逻辑表,它包含了已经插入的数据行的一个副本。inserted表包含了INSERT语句中已记录的插入动作。inserted表还允许引用由初始化INSERT语句而产生的日志数据。触发器通过检查inserted表来确定是否执行触发器动作或如何执行它。inserted表中的行总是触发器表中一行或多行的副本。 
    日志记录了所有修改数据的动作(INSERT、UPDATE和DELETE语句),但在事务日志中的信息是不可读的。然而,inserted表允许你引用由INSERT语句引起的日志变化,这样就可以将插入数据与发生的变化进行比较,来验证它们或采取进一步的动作。也可以直接引用插入的数据,而不必将它们存储到变量中。
      

  2.   

    to  Hopewell_Go(好的在后頭﹗希望更好﹗﹗)
    不好意思,没有看到关于我的问题的解释,您能说的再详细点吗?
      

  3.   

    to cywarson(阿胜):
    那我能能将其他表的字段值赋给触发器的变量吗?可以,在触发器中定义的变量,当然可以获得其它表中的字段值.与存储过程是一样的
      

  4.   

    cxmcxm(小陈) :你好!
    我试了一下总是语法错误,能给个语法吗?比如说在定义一个用户变量user,怎样给他赋其他表(login表)的值?
      

  5.   

    给个update触发器的例子
    create table a1 (c1 char(10),c2 char(10))
    create table a2 (c1 char(10),c2 char(10) null)
    insert into a1 values ('aaa','111')
    insert into a1 values ('bbb','222')
    insert into a2 (c1) values ('aaa')
    insert into a2 (c1) values ('bbb')
    a2表的c2列现在为空,现创建在update存储过程,如果更新a2表的c2列,使a2表的c2列与a1表的c2列一样
    设c1列为关联字段
    create trigger trigU_a2 for update 
    as
    if update(c2) 
      update a2 set c2=a1.c2
      from a1,a2,inserted c where a1.c1=a2.c1 and a2.c1=inserted.c1
    创建此触发器后
    执行
     update a2 set c2='abc' where c1='aaa'
     update a2 set c2='efg' where c1='bbb'
    后可发现 a2表的c2列的值与a1表的c2列相同,并非'abc'与'efg'