当前位置:编程学习 > C#/ASP.NET >>

SQL 触发器 保持唯一的怎么实现啊?~

有个表table1有 A,b,c 三个字段  
当我插入一个记录   

1 张三 24

如果再插入一条B,C 字段还是 张三 和 24  
那么直接return  

用insert触发器怎么实现~求教
--------------------编程问答-------------------- --------------------编程问答-------------------- caret TRIGGER [dbo].[tr_tb_table1_Add]
   ON  [dbo].[tb_table1]
  for insert
 as
declare @id int
select @id=id from inserted 
insert into  --------------------编程问答-------------------- ALTER TRIGGER [dbo].[Table1trg]
            ON [dbo].[table1]
FOR insert
AS
    SET NOCOUNT ON
    
    declare @id int
    select @id=id from inserted 

    IF EXISTS ( SELECT 1 FROM table1 WHERE a=@a)
    BEGIN
        ROLLBACK TRAN
        RAISERROR('不能插入已经存在记录!',18,18)
    END --------------------编程问答--------------------
引用 3 楼 ohhero 的回复:
ALTER TRIGGER [dbo].[Table1trg]
  ON [dbo].[table1]
FOR insert
AS
  SET NOCOUNT ON
   
  declare @id int
  select @id=id from inserted 

  IF EXISTS ( SELECT 1 FROM table1 WHERE a=@a)
  BEGI……

差不多了,楼主再改一下吧 --------------------编程问答--------------------
引用 3 楼 ohhero 的回复:
ALTER TRIGGER [dbo].[Table1trg]
  ON [dbo].[table1]
FOR insert
AS
  SET NOCOUNT ON
   
  declare @id int
  select @id=id from inserted 

  IF EXISTS ( SELECT 1 FROM table1 WHERE a=@a)
  BEGI……


嗯   就这样吧 --------------------编程问答-------------------- caret trigger tableTr ON [dbo].[tb_table1] after insert
 as
delete table where id in( select max(id) from table)  --------------------编程问答-------------------- create trigger tableTr on table after insert 
as
delete table where id in( select max(id) from table)  
 
上面打错了
--------------------编程问答-------------------- ALTER TRIGGER [dbo].[Table1trg]
  ON [dbo].[table1]
FOR  insert
AS
BEGIN

INSERT TABLE1 SELECT B,C FROM INSERTED I 
WHERE NOT EXISTS(SELECT 1 FROM TABLE1 WHERE B=T.B AND C=T.C)
END

--直接插入不存在上的记录就可以了,抛错并不好 --------------------编程问答-------------------- = =题目看错 设个唯一约束 用事务来处理 插入相同内容就会 事务回滚  --------------------编程问答--------------------
ALTER TRIGGER [dbo].[Table1trg]
  ON [dbo].[table1]
FOR insert
AS
BEGIN

INSERT TABLE1 SELECT B,C FROM INSERTED I  
WHERE NOT EXISTS(SELECT 1 FROM TABLE1 WHERE B=I.B AND C=I.C)
END
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,