环境 WINDOWS 2003+SQL 2005
用途:有表A,B
表A记录用户的ID 
A:id  time
   a    a1
   b    b1
   c    c1
表B记录修改的字段
B: id1   id2
   aa    aa1
   bb    bb1
   cc    cc1
表A和表B没关联,
触发器功能:当发现B表中的字段是有A表中的ID为a的用户改动时,阻止字段修改,并返回消息,如果不是a用户正常运行

解决方案 »

  1.   

    在触发器里直接返回应该是可以的,至于说返回消息,不知道能不能使用raiserror来实现,可以试一下
      

  2.   

    当发现B表中的字段是有A表中的ID为a的用户改动时这里表A记录的用户指的是数据库登陆吗,关键在于用户信息获取,如果是你自己定义的用户,那只能告诉你,确实没有高手,因为任何人得不到这个用户联系,任何人都做不出来
      

  3.   

    用instead of触发器就可以了,会替代原来的整个操作,写个小例子,当输入为10的时候报错CREATE TABLE tb (id INT)
    INSERT tb SELECT 1
    go
    create TRIGGER t_test ON tb
    instead OF UPDATE
    AS 
    DECLARE @tmp int
    SELECT @tmp=id  FROM inserted
    IF @tmp=10
    PRINT '不能为10'
    ELSE 
    UPDATE tb SET id=(SELECT id FROM inserted) 
    GO --测试
    UPDATE tb SET id=10
    SELECT * FROM tb
      

  4.   

    A表内的数据是程序自动插入的,也就是一个日志表
    因为需要先判断日志表A再判断B表字段是否被修改,然后再触发触发器
      

  5.   

    UPUPUP分不够可以再加,求高手
      

  6.   

    有个疑问:
    既然B表与A表没关联,在仅对B表进行操作时,你怎么知道对B表进行改动的是A表中的哪个ID操作的呢?
      

  7.   

    A表中的ID为a的用户改动?这个,用触发器做不了.我的建议是在程序中,判断是这个用户登录时,不让其更改B表数据即可.