Копирование данных между таблицами без идентификатора столбца - PullRequest
1 голос
/ 20 марта 2011

У меня есть две таблицы, и мне нужно скопировать данные из SRCServiceUsers в клиенты

Каждый раз, когда я запускаю его, я получаю следующее:

Нарушение ограничения PRIMARY KEY 'PK_Clients».Невозможно вставить дубликат ключа в объект «dbo.Clients».Заявление было прекращено.Поле ClientId первичного ключа не является столбцом идентификаторов и поэтому требует заполнения

. На сегодняшний день у меня есть следующее

insert into Clients(ClientID, Title, Forenames, FamilyName,
                    [Address], Town, County, PostCode,
                    PhoneNumber, StartDate)
    SELECT (Select Max(Clients.ClientID)+ 1,
            SRCServiceUsers.Title,
            SRCServiceUsers.[First Names],
            SRCServiceUsers.Surname,
            --BUILD UP MUITIPLE COLUMNS
            SRCServiceUsers.[Property Name] + ', ' + SRCServiceUsers.Street + ', ' 
               +  SRCServiceUsers.Suburb as [Address],
            SRCServiceUsers.Town,
            SRCServiceUsers.County,
            SRCServiceUsers.Postcode,
            SRCServiceUsers.Telephone,
            SRCServiceUsers.[Start Date]
    FROM 
       srcsERVICEuSERS

Как я могу автоматически заполнить поле PK - CLientID при вставкеданные?

Большое спасибо

Андрей

1 Ответ

3 голосов
/ 20 марта 2011
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

BEGIN TRANSACTION

DECLARE @MaxClientId INT

SELECT @MaxClientId = MAX(ClientID) /*SERIALIZABLE will prevent any inserts above this*/
FROM Clients

INSERT INTO Clients(....)
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 0)) + @MaxClientId...
FROM srcsERVICEuSERS

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