#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