Копировать каждую личность вставленных записей - PullRequest
0 голосов
/ 29 апреля 2011

Сначала у меня две таблицы:

Table:     TBL#Sell

   SellId    ClientId    ProductId
                1           3
                3           5
                4            6

секунда:

 Table: TBL#Sell2

    SellId      ClientId       ProductId

Теперь я хочу скопировать каждую запись первой таблицы во вторую.Столбец «SellId» во второй таблице (Sell2.SellId) имеет значение «Автоинкремент (идентификатор)».

для любой вставки TBL # Sell2.SellId будет установлен с новым идентификатором, и я должен сохранить идентификатор в TBL # Sell1.SellIdЭто понятно?Каково решение?Плз. спасибо

Я хочу сохранить TBL # Sell2.SellId в TBL # Sell.SellId

Ответы [ 4 ]

1 голос
/ 29 апреля 2011

Посмотрите на предложение OUTPUT в Books Online.

1 голос
/ 29 апреля 2011
0 голосов
/ 29 апреля 2011

Это TBL#Sell2 пусто, вы просто хотите дать номер каждой строке в TBL#Sell. Вы можете сделать это без использования TBL#Sell2.

Добавить временный столбец идентификаторов, переместить значения в SellId, удалить временный столбец.

alter table TBL#Sell add SellId_tmp int not null identity
go
update TBL#Sell set SellId = SellId_tmp
go
alter table TBL#Sell drop column SellId_tmp

Другой способ - использовать CTE с row_number ().

;with cte as
(
  select *,
    row_number() over(order by (select(1))) as rn
  from TBL#Sell
) 
update cte set
  SellId = rn    
0 голосов
/ 29 апреля 2011

Я думаю, у вас есть больше способов выполнить эту задачу.

Вы могли бы написать хранимую процедуру, которая для каждой записи в таблице1 записывает в таблицу2, а затем обновлять таблицу1, получая значение идентификатора из SCOPE_IDENTITY ()

Или, если пара ClientId / ProductId является ключом, может быть другой способ сделать вставку, а затем обновить что-то вроде этого:

insert into TBL#Sell2
select SellId, ClientId, ProductId from TBL#Sell

upadte TBL#Sell
set TBL#Sell.SellId = TBL#Sell2.SellId
from TBL#Sell T1 join TBL#Sell2 T2
on T1.ClientId = T2.ClientId and T1.ProductId  = T2.ProductId 

РЕДАКТИРОВАТЬ Заменено @@ Идентичность на SCOPE_IDENTITY

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...