2013-12-09 3 views
0

Моя проблема с @officeident. В том, что для каждой новой записи, вставленной в LicenseHolder, она имеет тот же officeident .. этот SQL вставляет в OfficeID значение 1495 для каждой строки. Это была последняя вставка. Что не создает родительские отношения с дочерними элементами.Вставить в родительскую таблицу и дочерние таблицы

Я думаю, что я должен исследовать следующий курсор. Для каждой вставки в Office новая строка затем добавляется к LicenseHolder, поэтому я могу построить отношения. Или, если есть более простой способ, или любая помощь будет принята с большой благодарностью.

DECLARE @officeident INT 

insert into [MembersDB].[dbo].[Office] 
([AddressLine1] 
,[AddressLine2] 
,[State] 
,[PostCode]) 
select [OfficeMailingAddr],[OfficeMailingAddr],[state],'1' FROM [Members].[dbo].[Main] 
SET @officeident = SCOPE_IDENTITY() 

INSERT INTO [MembersDB].[dbo].[LicenseHolder] ([Name] 
    ,[Email] 
    ,[Mobile] 
    ,[OfficeNumber] 
    ,[LicenseHolderTypeID] 
    ,[PartyTypeID] 
    ,[OfficeID]) 

SELECT 
    [OfficeOf] 
    ,[OfficeEmail] 
    ,[Phone] 
    ,'1234' 
    ,'1' 
    ,'1' 
    ,@officeident  --I want like this to be different for each row. 
FROM [Members].[dbo].[Main] 

ответ

0

Попробуйте что-нибудь подобное. Я написал это с головы, так что вам, возможно, придется отлаживать еще:

В принципе, я написал здесь курсор, который перебирает результаты таблицы, которую вы хотите использовать для вставки в новые таблицы. А затем создайте две новые записи вставки сразу ... (а затем сделайте то же самое со следующей строкой результата из таблицы MAIN).

DECLARE @OfficeMailingAddr as varchar(254), @OfficeMailingAddr as varchar(254), @state as varchar(254), @Name as varchar(254), @Email as varchar(254), @Mobile as varchar(254), @Phone as varchar(254) 

declare NewCursor Cursor for 
SELECT [OfficeMailingAddr],[OfficeMailingAddr],[state], [Name] 
    ,[Email] 
    ,[Mobile] 
    ,[OfficeNumber] FROM [Members].[dbo].[Main] 

open NewCursor 
fetch next from NewCursor into @OfficeMailingAddr, @OfficeMailingAddr, @state, @Name, @Email, @Mobile, @Phone 
WHILE @@FETCH_STATUS = 0 
begin 

    insert into [MembersDB].[dbo].[Office] 
([AddressLine1] 
,[AddressLine2] 
,[State] 
,[PostCode]) VALUES (@OfficeMailingAddr, @OfficeMailingAddr, @state,'1') 
SET @officeident = SCOPE_IDENTITY() 

INSERT INTO [MembersDB].[dbo].[LicenseHolder] ([Name] 
    ,[Email] 
    ,[Mobile] 
    ,[OfficeNumber] 
    ,[LicenseHolderTypeID] 
    ,[PartyTypeID] 
    ,[OfficeID]) VALUES (@Name, @Email, @Mobile, @Phone,'1234' 
    ,'1' 
    ,'1' 
    ,@officeident) 

FETCH NEXT FROM NewCursor INTO @OfficeMailingAddr, @OfficeMailingAddr, @state, @Name, @Email, @Mobile, @Phone 
END 

Close NewCursor 
deallocate NewCursor 
Смежные вопросы