谁帮我修改一下错误的地方 
ALTER TRIGGER [Valid_shortmessage] 
ON [dbo].[ST_shortmessage] 
Instead Of INSERT 
AS 
BEGIN 
declare @Receiver varchar(256) 
select @Receiver=Receiver from inserted 
if(@Receiver not in(select UserName from aspnet_Users)) 
signal sqlstate '17' 
set message_text = '不存在此用户,发送失败!'; else 
insert into ST_shortmessage select * from inserted 
END 消息 102,级别 15,状态 1,过程 Valid_shortmessage,第 21 行 
'signal' 附近有语法错误。

解决方案 »

  1.   


    ALTER TRIGGER [Valid_shortmessage] 
    ON [dbo].[ST_shortmessage] 
    Instead Of INSERT 
    AS 
    BEGIN 
    declare @Receiver varchar(256) 
    select @Receiver=Receiver from inserted 
    if(@Receiver not in(select UserName from aspnet_Users)) 
    RAISERROR('不存在此用户,发送失败!', 17 ,-1)
    WITH SETERRORset message_text = '不存在此用户,发送失败!'; else 
    insert into ST_shortmessage select * from inserted 
    END 好像是这种用法,不过不知道对不对?
      

  2.   

    signal sqlstate '17' 
    应该是这句话的错误
    一楼说的是对的,应该使用:
    RAISERROR('不存在此用户,发送失败!', 17 ,-1)
    WITH SETERROR
      

  3.   

    ALTER TRIGGER [Valid_shortmessage] 
    ON [dbo].[ST_shortmessage] 
    Instead Of INSERT 
    AS 
    BEGIN 
    if not exists(select 1 from aspnet_Users u join inserted i on u.UserName=i.Receiver)
    raiserror('不存在此用户,发送失败!',17,1) 
    else 
    insert into ST_shortmessage select * from inserted 
    END
      

  4.   

    set message_text = '不存在此用户,发送失败!'; 这句不用3楼的可以运行 谢谢了