--试试这样改触发器:CREATE TRIGGER [useriddetet] ON [dbo].[USERID] 
FOR  update
AS
delete c
from c join deleted d on c.userid=d.userid insert c (userid,formtag,buttontag) 
select userid, formtag,buttontag  
from b join inserted i on b.rolecode=i.rolecode

解决方案 »

  1.   

    还有,你不是要求用rolecode到b表中查询有关记录吗?
    怎么你的触发器用了?:
    from b where rolecode=@userid
      

  2.   

    @userid 这个声明的变量我赋了两次值
      select @userid=userid from deleted  select @userid=rolecode from inserted
    不知道sqlserver支持不支持。按照你写的触发器我试了出现同样的错误
      

  3.   

    我按照邹建的改了,而且把a表清空了,加了主键和约束。
    还是出现同样的错误,
    我也试了,如果把触发拿掉保存一切ok。
      

  4.   

    查一下有没有其他触发器在a表
    for insert?
      

  5.   

    触发器是在userid表上的,userid表有主键吗?不行的话,帖测试数据出来测试.
      

  6.   

    现在触发器虽然还同样的报错,但是要达到的运行结果没有问题(按照邹建写的)这是加了主键的a表。
    CREATE TABLE [USERID] (
    [USERNAME] [varchar] (12) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [USERID] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [ROLECODE] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [REMARKS] [varchar] (12) COLLATE Chinese_PRC_CI_AS NULL ,
    [SUPPERMANAGER] [varchar] (12) COLLATE Chinese_PRC_CI_AS NULL ,
    [SCOPECODE] [varchar] (2) COLLATE Chinese_PRC_CI_AS NULL ,
    [DEPARTNO] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
    [ENABLE] [varchar] (1) COLLATE Chinese_PRC_CI_AS NULL ,
    [PASSWORD] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
    [CREATER] [varchar] (12) COLLATE Chinese_PRC_CI_AS NULL ,
    [CREATEDATE] [datetime] NULL ,
    [MODIFIER] [varchar] (12) COLLATE Chinese_PRC_CI_AS NULL ,
    [MODIFYDATE] [datetime] NULL ,
    CONSTRAINT [PK_USERID] PRIMARY KEY  CLUSTERED 
    (
    [USERID]
    )  ON [PRIMARY] ,
    CONSTRAINT [IX_USERID_1] UNIQUE  NONCLUSTERED 
    (
    [USERNAME],
    [USERID]
    )  ON [PRIMARY] 
    ) ON [PRIMARY]