我的问题在于@officeident
。对于插入LicenseHolder
的每个新记录,它具有相同的officeident
..此SQL将每行的值1495插入OfficeID
。这是最后插入的身份。哪个不会创建父子关系。
我想我应该研究下一个光标。对于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 :(得分:0)
尝试这样的事情。我把它写在了我的头顶,所以你可能需要调试:
基本上,我在这里写了一个游标,它循环遍历你想要用来插入新表的表的结果。然后一次创建2个新的插入记录...(然后对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