在一列中插入不同的值,在另一列中插入重复的值

时间:2014-04-21 13:14:04

标签: sql-server stored-procedures

我有一个只有2列的数据库表:TaskId&电子邮件 当用户单击某个按钮时,它会在表中插入一个值。我编写了一个存储过程,如下所示:

  create proc spTaskPerformed
  @TaskId int,
  @Email varchar(100)
  as
  begin
  Insert into tblTaskPerformed values(@TaskId,@Email)
  end

但我想仅在TaskId对特定Email发送故障时才插入值。如果我对TaskId使用distict关键字,即使电子邮件被更改,它也不会让我插入相同的TaskId。帮助。

2 个答案:

答案 0 :(得分:1)

如果希望对是唯一的,则应对值创建唯一约束:

create unique index tblTaskPerformed_TaskId_Email on tblTaskPerformed(TaskId, Email);

这样可以防止表格中的重复。

如果您不希望存储过程生成错误,则可以使用try / catch语句来捕获此类错误。

答案 1 :(得分:0)

只需添加一个if语句,查找是否存在taskid和电子邮件

IF NOT EXISTS (SELECT 1 FROM tblTaskPerformed WHERE TaskId = @TaskId AND Email =@Email)
BEGIN
     INSERT INTO tblTaskPerformed VALUES(@TaskId,@Email)

END