ВСТАВИТЬ В таблицу, если ОНА НЕ СУЩЕСТВУЕТ, а затем ВСТАВИТЬ повторяющиеся записи в другую таблицу

#sql #sql-server-2008 #stored-procedures

#sql #sql-server-2008 #хранимые процедуры

Вопрос:

Я пишу хранимую процедуру в течение последних 2 дней, и я не могу в этом разобраться.

Задача: у меня есть таблица «таблица 1», в которой есть несколько строк с «Назначением нет» в качестве основного идентификатора.

Существует другая таблица «таблица 1_copy», которая идентична таблице 1 с необязательным первичным ключом.

Я хочу вставить «имя» и «фамилию» в «таблицу 1». Однако, если эта запись уже существует в «таблице 1», тогда эти дублирующие записи должны быть вставлены в «tabel 1_copy», а не дублирующие — в «таблицу 1»

Короче говоря, я вставляю новые записи с новым «Назначением no» в «таблицу 1» и дублирующим назначением no, которые уже существуют в таблице 1, в таблицу 1_copy.

Я мог бы определить вставку в ЧАСТЬ, если ОНА НЕ СУЩЕСТВУЕТ, но я изо всех сил пытаюсь захватить дубликаты и вставить в «таблицу 1_copy»

Пожалуйста, помогите мне.

Заранее спасибо

Комментарии:

1. Некоторые из ваших формулировок создают у меня впечатление, что ваш SP пытается сохранить коллекцию записей. Так ли это, или вы указываете только одно имя / фамилию?

Ответ №1:

Должно работать что-то вроде следующего:

 IF NOT EXISTS (SELECT * FROM table_1 WHERE FirstName=@FirstName AND LastName=@LastName)
   INSERT INTO table_1 ... 
ELSE
   INSERT INTO table_1_copy ...
  

Ответ №2:

Я думаю, вы могли бы сделать что-то вроде приведенного ниже

  IF NOT EXTIST (SELECT 'X' FROM TABLE1 WHERE FirstName = @FirstName AND LastName =    @LastName)
 BEGIN
INSERT INTO TABLE1 (BLAH, BLAH)
 END
 ELSE
INSERT INTO TABLE1_COPY 
SELECT BLAH, BLAH FROM TABLE1 WHERE FirstName = @FirstName AND LastName = @LastName
 END