CREATE TRIGGER protected ON [dbo].[SEOrder] 
FOR INSERT, UPDATE
AS
declare @p int,@fheadselfs0141 varchar(255)
select @p=count(*) from seorder where fheadselfs0141=@fheadselfs0141
if @p>1 
begin
   RAISERROR ('对方单据号重复,不可以保存',16, 1)
    rollback 
end
有没有重复都可以保存,不知道哪里出了问题.求高手指点

解决方案 »

  1.   

    @fheadselfs0141 没有赋值呀,所以@P应该为0了再说,这功能应该由约束来做,而不是触发器
      

  2.   

    CREATE TRIGGER protected ON [dbo].[SEOrder] 
    FOR INSERT, UPDATE 
    AS 
    declare @p int,@fheadselfs0141 varchar(255) 
    select @fheadselfs0141=fheadselfs0141 from inserted
    select @p=count(*) from seorder where fheadselfs0141=@fheadselfs0141 
    if @p>1 
    begin 
      RAISERROR ('对方单据号重复,不可以保存',16, 1) 
        rollback transaction
    end
      

  3.   

    CREATE TRIGGER protected ON [dbo].[SEOrder] 
    FOR INSERT, UPDATE
    AS
    declare @p int,@fheadselfs0141 varchar(255)
    select @p=count(*) from seorder where fheadselfs0141=@fheadselfs0141
    select @fheadselfs0141=fheadselfs0141
    from inserted
    if @p>1 
    begin
       RAISERROR ('对方单据号重复,不可以保存',16, 1)
        rollback 
    end
    不好意思,搞掉一行,赋值了也是一样的
      

  4.   


    select @p=count(*) from seorder where fheadselfs0141=@fheadselfs0141 
    select @fheadselfs0141=fheadselfs0141 
    from inserted 
    这两行的位置应该调过来呀,赋值后才使用
      

  5.   

    你先引用后赋值 没起到任何作用
    还有你有几条才算重复
    if >=1 ?