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 的过程是否正确?

玩了一下,是的,我所展示的正是我所要求的。