QGIS加载SQL Server视图报错后基于外键填充新表字段咨询
解决方案
一、批量填充GoldWeight表的关联字段
直接使用SQL Server的UPDATE ... FROM关联更新语法即可通过外键关联批量填充对应值,执行以下SQL:
UPDATE gw SET gw.SiteName = s.SiteName, gw.Geo4 = s.Geo4 FROM GoldWeight gw INNER JOIN Sites s ON gw.SiteID = s.SiteID
执行后就能把Sites表中匹配SiteID的SiteName和Geo4字段值同步到GoldWeight表中。
二、解决QGIS加载图层报错的问题
你之前不管是用视图还是新建的GoldWeight表加载失败,核心原因都是QGIS无法识别到图层的唯一主键:
- 如果你继续使用新建的GoldWeight物理表,需要先给表添加主键约束(你是按SiteID分组生成的表,SiteID值唯一可作为主键):
ALTER TABLE GoldWeight ADD CONSTRAINT PK_GoldWeight_SiteID PRIMARY KEY (SiteID)
执行完上述操作后再加载到QGIS即可正常识别。
- 更推荐的视图方案优化:不需要额外建物理表存储冗余数据,之前加载视图报错只是因为QGIS没有识别到视图的唯一字段,你在QGIS添加SQL Server图层的向导界面,选中对应视图后,手动将
SiteID指定为唯一标识符字段,即可正常加载视图,后续源表数据更新后视图会自动同步,无需手动维护。
内容的提问来源于stack exchange,提问作者acasaly
相关产品推荐
相关产品推荐

