VS 2013 数据库项目 - 填充常备数据
VS 2013 Database Project - Populating Standing Data
我有几个 运行 post 部署的合并脚本,其中一个根据以下内容设置查找 table:
MERGE INTO [Languages] AS Target
USING (VALUES
('English','eng','en')
,('French','fra','fr')
) AS Source ([LanguageName],[Iso639Code],[Locale])
ON (Target.[Iso639Code] = Source.[Iso639Code])
WHEN MATCHED THEN
UPDATE SET
[LanguageName] = Source.[LanguageName],
[Locale] = Source.[Locale],
[UserModified] = @UpdatedBy,
[ModifiedDateTime] = GETDATE()
WHEN NOT MATCHED BY TARGET THEN
INSERT([LanguageName],[Iso639Code],[Locale],[UserCreate],[CreateDateTime])
VALUES(Source.[LanguageName],Source.[Iso639Code],Source.[Locale],@UpdatedBy,GETDATE());
GO
这个 table 有一个 [int] 作为主键。这个脚本运行良好。
所以我的问题是我现在有另一个脚本需要从这个 table 中查找主键以插入第二个 table.
MERGE INTO [Countries] AS Target
USING (VALUES
('England')
,('France')
) AS Source ([CountryName])
ON (Target.[CountryName] = Source.[CountryName])
WHEN MATCHED THEN
UPDATE SET
[CountryName] = Source.[CountryName],
[LanguageId] = (Select LanguageID from [Languages] where [LanguageName] = Source.[LanguageName]),
[Locale] = Source.[Locale],
[UserModified] = @UpdatedBy,
[ModifiedDateTime] = GETDATE()
WHEN NOT MATCHED BY TARGET THEN
INSERT([CountryName],LanguageId,[UserCreate],[CreateDateTime])
VALUES(Source.[CountryName],(Select LanguageID from [Languages] where [LanguageName] = Source.[LanguageName]),@UpdatedBy,GETDATE());
GO
使用 post 部署脚本 link 两个 table 的过程是否正确?
玩了一下,是的,我所展示的正是我所要求的。
我有几个 运行 post 部署的合并脚本,其中一个根据以下内容设置查找 table:
MERGE INTO [Languages] AS Target
USING (VALUES
('English','eng','en')
,('French','fra','fr')
) AS Source ([LanguageName],[Iso639Code],[Locale])
ON (Target.[Iso639Code] = Source.[Iso639Code])
WHEN MATCHED THEN
UPDATE SET
[LanguageName] = Source.[LanguageName],
[Locale] = Source.[Locale],
[UserModified] = @UpdatedBy,
[ModifiedDateTime] = GETDATE()
WHEN NOT MATCHED BY TARGET THEN
INSERT([LanguageName],[Iso639Code],[Locale],[UserCreate],[CreateDateTime])
VALUES(Source.[LanguageName],Source.[Iso639Code],Source.[Locale],@UpdatedBy,GETDATE());
GO
这个 table 有一个 [int] 作为主键。这个脚本运行良好。
所以我的问题是我现在有另一个脚本需要从这个 table 中查找主键以插入第二个 table.
MERGE INTO [Countries] AS Target
USING (VALUES
('England')
,('France')
) AS Source ([CountryName])
ON (Target.[CountryName] = Source.[CountryName])
WHEN MATCHED THEN
UPDATE SET
[CountryName] = Source.[CountryName],
[LanguageId] = (Select LanguageID from [Languages] where [LanguageName] = Source.[LanguageName]),
[Locale] = Source.[Locale],
[UserModified] = @UpdatedBy,
[ModifiedDateTime] = GETDATE()
WHEN NOT MATCHED BY TARGET THEN
INSERT([CountryName],LanguageId,[UserCreate],[CreateDateTime])
VALUES(Source.[CountryName],(Select LanguageID from [Languages] where [LanguageName] = Source.[LanguageName]),@UpdatedBy,GETDATE());
GO
使用 post 部署脚本 link 两个 table 的过程是否正确?
玩了一下,是的,我所展示的正是我所要求的。