Проверьте наличие дублирующихся записей перед вставкой в ​​SQL Server 2005 - PullRequest
0 голосов
/ 28 ноября 2011

В SQL Server 2005 у меня есть такая таблица

empno             name          project
--------       --------       -----------
1               ram              pro-1
2               sheik            pro-2

Теперь я хочу вызвать ошибку, когда пытаюсь вставить запись с empno и значениями проекта, уже представленными в таблице.

Ответы [ 2 ]

3 голосов
/ 28 ноября 2011

Если вы хотите выдать ошибку, вы можете поставить УНИКАЛЬНЫЙ ИНДЕКС или УНИКАЛЬНОЕ ОГРАНИЧЕНИЕ на (empno, project) При попытке INSERT значение конфликтует с INDEX/CONSTRAINT будет сгенерировано исключение.

В качестве альтернативы вы можете вставить, если запись не существует, или обновить name, если она уже есть в таблице:

IF NOT EXISTS (SELECT 1
             FROM yourTable AS t
             WHERE t.empNo = @yourEmpNo
                AND t.project = @yourProject)
BEGIN
   INSERT INTO yourTable (empno, name, project)
   SELECT @empno, @name, @project
END
ELSE
BEGIN
   UPDATE t
   SET t.Name = @name
   FROM yourTable AS t
   WHERE t.empno = @empno
      AND t.project = @project
END
2 голосов
/ 28 ноября 2011

Если существует, то RAISERROR, если не вставить соответственно, кодовый блок приведен ниже:

IF EXISTS (SELECT 1 FROM targetTable AS t
     WHERE t.empNo = @yourEmpNo
         AND t.project = @yourProject)
BEGIN
   RAISERROR('Raising errors',18,1)
END
ELSE
BEGIN
   INSERT INTO yourTable (empno, name, project)
      SELECT @empno, @name, @project
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...