我有一个只有2列的数据库表:TaskId&电子邮件 当用户单击某个按钮时,它会在表中插入一个值。我编写了一个存储过程,如下所示:
create proc spTaskPerformed
@TaskId int,
@Email varchar(100)
as
begin
Insert into tblTaskPerformed values(@TaskId,@Email)
end
但我想仅在TaskId对特定Email发送故障时才插入值。如果我对TaskId使用distict关键字,即使电子邮件被更改,它也不会让我插入相同的TaskId。帮助。
答案 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