Tricky. ...
:
TestTableCamera, :
CREATE TABLE dbo.TestTableCamera
(
Id int identity(1,1) primary key,
AliasTitle nvarchar(500),
Make nvarchar(500),
Model nvarchar(MAX)
)
. , :
IF objectproperty(object_id('dbo.media_gallery_flickr_import'), 'isProcedure') = 1
DROP PROCEDURE dbo.media_gallery_flickr_import
GO
CREATE PROCEDURE dbo.media_gallery_flickr_import
@dataImported as dbo.MediaGalleryFlickrImportParameters READONLY
AS
SET NOCOUNT on
DECLARE @NewIds table (Id int not null)
INSERT TestTableCamera (AliasTitle, Make, Model)
output inserted.Id
into @NewIds
select CameraAliasTitle, CameraMake, CameraModel
from @dataImported
except select AliasTitle, Make, Model
from TestTableCamera
UPDATE TestTableCamera
set AliasTitle = AliasTitle + ' - ' + cast(ni.Id as varchar(10))
from TestTableCamera ttc
inner join @NewIds ni
on ni.Id = ttc.Id
RETURN 0
GO
.
SET NOCOUNT on
TRUNCATE TABLE TestTableCamera
DECLARE
@TestSet_1 dbo.MediaGalleryFlickrImportParameters
INSERT @TestSet_1 values
('Title 1', 'This is the first item', 100, 'Camera Alias A', 'Make AA', 'Model 1')
,('Title 2', 'This is the second item', 200, 'Camera Alias A', 'Make AA', 'Model 1')
,('Title 3', 'This is the third item', 300, 'Camera Alias B', 'Make BB', 'Model 2')
,('Title 4', 'This is the fourth item', 400, 'Camera Alias C', 'Make BB', 'Model 3')
,('Title 5', 'This is the fifth item', 500, 'Camera Alias D', 'Make CC', 'Model 1')
EXECUTE media_gallery_flickr_import @TestSet_1
SELECT * from TestTableCamera order by Id
, ... . !
:
SET NOCOUNT on
TRUNCATE TABLE TestTableCamera
DECLARE
@TestSet_1 dbo.MediaGalleryFlickrImportParameters
,@TestSet_2 dbo.MediaGalleryFlickrImportParameters
INSERT @TestSet_1 values
('Title 1', 'This is the first item', 100, 'Camera Alias A', 'Make AA', 'Model 1')
,('Title 2', 'This is the second item', 200, 'Camera Alias A', 'Make AA', 'Model 1')
,('Title 3', 'This is the third item', 300, 'Camera Alias B', 'Make BB', 'Model 2')
,('Title 4', 'This is the fourth item', 400, 'Camera Alias C', 'Make BB', 'Model 3')
,('Title 5', 'This is the fifth item', 500, 'Camera Alias D', 'Make CC', 'Model 1')
EXECUTE media_gallery_flickr_import @TestSet_1
SELECT 'First pass' [ ], * from TestTableCamera order by Id
EXECUTE media_gallery_flickr_import @TestSet_1
SELECT 'Second pass' [ ], * from TestTableCamera order by Id
INSERT @TestSet_2 values
('Title 1', 'This is a duplicate of the first item', 100, 'Camera Alias A', 'Make AA', 'Model 1')
,('Title 6', 'This is the sixth item', 600, 'Camera Alias E', 'Make DD', 'Model 7')
EXECUTE media_gallery_flickr_import @TestSet_2
SELECT 'Third pass' [ ], * from TestTableCamera order by Id
... ! Weve "AliastTitle" , , . .
. , EXCEPT, "". , .
, :
DROP TABLE TestTableCamera
CREATE TABLE dbo.TestTableCamera
(
Id int identity(1,1) primary key,
AliasTitle nvarchar(500),
AdjustedAlias as AliasTitle + ' - ' + cast(Id as varchar(10)),
Make nvarchar(500),
Model nvarchar(MAX)
)
, output:
IF objectproperty(object_id('dbo.media_gallery_flickr_import'), 'isProcedure') = 1
DROP PROCEDURE dbo.media_gallery_flickr_import
GO
CREATE PROCEDURE dbo.media_gallery_flickr_import
@dataImported as dbo.MediaGalleryFlickrImportParameters READONLY
AS
SET NOCOUNT on
INSERT TestTableCamera (AliasTitle, Make, Model)
select CameraAliasTitle, CameraMake, CameraModel
from @dataImported
except select AliasTitle, Make, Model
from TestTableCamera
RETURN 0
GO
, . ? , , , . kludgy, AliasTitle. , .
, , !
ADDENDA, :
TestTableImage , , , CameraId :
CREATE TABLE dbo.TestTableImage
(
Id int identity(1,1) primary key,
AliasTitle nvarchar(500),
Title nvarchar(500),
Description nvarchar(MAX),
Hits bigint,
CameraId int
constraint FK_TestTableImage__TestTableCamera
foreign key references TestTableCamera (Id)
)
TestTableCamera ( - INSERT):
IF objectproperty(object_id('dbo.media_gallery_flickr_import'), 'isProcedure') = 1
DROP PROCEDURE dbo.media_gallery_flickr_import
GO
CREATE PROCEDURE dbo.media_gallery_flickr_import
@dataImported as dbo.MediaGalleryFlickrImportParameters READONLY
AS
SET NOCOUNT on
INSERT TestTableCamera (AliasTitle, Make, Model)
select CameraAliasTitle, CameraMake, CameraModel
from @dataImported
except select AliasTitle, Make, Model
from TestTableCamera
INSERT TestTableImage (AliasTitle, Title, Description, Hits, CameraId)
select ttc.AdjustedAlias, di.Title, di.Description, di.Hits, ttc.Id
from @dataImported di
inner join TestTableCamera ttc
on ttc.AliasTitle = di.CameraAliasTitle
and ttc.Make = di.CameraMake
and ttc.Model = di.CameraModel
RETURN 0
GO
, , ( - < TRUNCATE TABLE
DELETE TestTableImage
DELETE TestTableCamera
AliasTitle; , . (, ID ?)
, , , . , , output, temp .