I have a "source" table that is being populated by a DTS bulk import
of a text file. I need to scrub the source table after the import
step by running appropriate stored proc(s) to copy the source data to
2 normalized tables. The problem is that table "Companies" needs to
be populated first in order to generate the Identity ID and then use
that as the foreign key in the other table.
Here is the DDL:
CREATE TABLE [dbo].[OriginalList] (
[FirstName] [varchar] (255) COLLATE SQL_Latin1_Gene ral_CP1_CI_AS NULL
,
[LastName] [varchar] (255) COLLATE SQL_Latin1_Gene ral_CP1_CI_AS NULL
,
[Company] [varchar] (255) COLLATE SQL_Latin1_Gene ral_CP1_CI_AS NULL ,
[Addr1] [varchar] (255) COLLATE SQL_Latin1_Gene ral_CP1_CI_AS NULL ,
[City] [varchar] (255) COLLATE SQL_Latin1_Gene ral_CP1_CI_AS NULL ,
[State] [varchar] (255) COLLATE SQL_Latin1_Gene ral_CP1_CI_AS NULL ,
[Zip] [varchar] (255) COLLATE SQL_Latin1_Gene ral_CP1_CI_AS NULL ,
[Phone] [varchar] (255) COLLATE SQL_Latin1_Gene ral_CP1_CI_AS NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Companies] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[Name] [varchar] (50) COLLATE SQL_Latin1_Gene ral_CP1_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CompanyLocation s] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[CompanyID] [int] NOT NULL ,
[Addr1] [varchar] (50) COLLATE SQL_Latin1_Gene ral_CP1_CI_AS NULL ,
[City] [varchar] (50) COLLATE SQL_Latin1_Gene ral_CP1_CI_AS NULL ,
[State] [varchar] (2) COLLATE SQL_Latin1_Gene ral_CP1_CI_AS NULL ,
[Zip] [varchar] (10) COLLATE SQL_Latin1_Gene ral_CP1_CI_AS NULL ,
[Phone] [varchar] (14) COLLATE SQL_Latin1_Gene ral_CP1_CI_AS NULL
) ON [PRIMARY]
GO
This is the stored proc I have at this time that does NOT work. It
uses the last Company insert for all the CompanyLocation s which is not
correct.
CREATE PROCEDURE DataScrubSP AS
Begin Transaction
insert Companies (Name) select Company from OriginalList
IF @@Error <> 0
GOTO ErrorHandler
declare @COID int
select @COID=@@identit y
insert CompanyLocation s (CompanyID, Addr1, City, State, Zip) select
@COID, Addr1, City, State, Zip from OriginalList
IF @@Error <> 0
GOTO ErrorHandler
COMMIT TRANSACTION
ErrorHandler:
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
RETURN
GO
Thanks for any help.
Alex.