无法将行添加到 SQL Server 视图
Posted
技术标签:
【中文标题】无法将行添加到 SQL Server 视图【英文标题】:Cannot add row to SQL Server View 【发布时间】:2019-11-13 09:10:57 【问题描述】:我有一个视图,它由两个表 TABLE_ONE 和 TABLE_TWO 组成。
这两个表通过它们的主键链接:PKT_UID(见图)。
我在两个表中添加了两行,并为它们提供了相同的 PKT_UID,但是当我在视图中搜索该 UID 时,视图没有显示任何具有此 PKT_UID 的行。
我对 SQL 视图了解不多,但我的理解是只要两个表中的两行通过相同的主键链接,它就应该显示在视图中。我错过了什么?
查看代码:
SELECT dbo.TABLE_ONE.PKT_UID, dbo.TABLE_ONE.IT_UID, dbo.TABLE_ONE.SKT_UID, dbo.TABLE_ONE.RMS_XSP,
dbo.TABLE_ONE.S_MT, dbo.TABLE_ONE.E_MT, dbo.TABLE_ONE.KILP, dbo.TABLE_ONE.KILT,
dbo.TABLE_ONE.IIC, dbo.TABLE_ONE.L_D, dbo.TABLE_ONE.S_D, dbo.TABLE_ONE.S_DAM,
dbo.TABLE_ONE.E_DF, dbo.TABLE_ONE.E_DFD, dbo.TABLE_ONE.H_U, dbo.TABLE_ONE.JK,
dbo.TABLE_ONE.JKT, dbo.TABLE_ONE.TRCE, dbo.TABLE_ONE.MOD, dbo.TABLE_ONE.TAK, dbo.TABLE_ONE.DG_AR,
dbo.TABLE_ONE.DG_LENGTH, dbo.TABLE_ONE.XSP_OFF, dbo.TABLE_ONE.JIK_UID, dbo.TABLE_ONE.FA_UID,
dbo.TABLE_ONE.JOB, dbo.TABLE_TWO.PKT_UID AS GULL_UID, dbo.TABLE_TWO.GULL_T_UID, dbo.TABLE_TWO.GULL_FRC_UID,
dbo.TABLE_TWO.GULLOPP_UID, dbo.TABLE_ONE.RMMS_XSP, dbo.TABLE_ONE.GANG, dbo.TABLE_ONE.TRM_BSD_DATE,
dbo.TABLE_ONE.DOLM, dbo.TABLE_ONE.DONM, dbo.TABLE_TWO.GULLM_UID, dbo.TABLE_TWO.AR_UID,
dbo.TABLE_TWO.PAR_UID, dbo.TABLE_TWO.RCT_UID, dbo.TABLE_TWO.PG_C, dbo.TABLE_TWO.RCT_YN_UID,
dbo.TABLE_TWO.SCHD_TM_UID, dbo.TABLE_ONE.NRS, dbo.TABLE_TWO.BS_M, dbo.TABLE_TWO.EMB_UID,
dbo.TABLE_TWO.MNG_REQ_UID, dbo.TABLE_TWO.FORM_R, dbo.TABLE_TWO.FORM_R_NAME, dbo.TABLE_TWO.SCHED_UID,
dbo.TABLE_ONE.SH_G, dbo.TABLE_ONE.SH_GT, dbo.TABLE_TWO.PKT_UID AS IT_N, CAST(dbo.TABLE_TWO.PKT_UID AS char(15))
AS GULL_NAME, dbo.TABLE_TWO.PACK
FROM dbo.TABLE_TWO INNER JOIN
dbo.TABLE_ONE ON dbo.TABLE_TWO.PKT_UID = dbo.TABLE_ONE.PKT_UID
WHERE (dbo.TABLE_ONE.IT_UID = 1160) AND (dbo.TABLE_ONE.E_DFD = 0)```
【问题讨论】:
视图的完整代码是什么?它有 WHERE 子句吗? 视图的SELECT是否返回了单机执行的预期结果? @BarneyL 谢谢!你解决了我的问题。视图代码中有一个未实现的 WHERE 子句。我没有意识到这是我第一次设置这样的视图。 【参考方案1】:SELECT
rm_c.ITEM_UID
,rm_g.ITEM_UID
FROM
RM_COMMON_ATTRIBUTES rm_c
LEFT JOIN RM_GULLY_2010_A rm_g
ON rm_g.ITEM_UID = rm_c.ITEM_UID
如果这显示两个 UID 都匹配,那么它不是表格
如果您使用的是报表生成器(您是否尝试过刷新所有字段)
【讨论】:
【参考方案2】:感谢@BarneyL 解决。视图代码中有一个WHERE RM_COMMON_ATTRIBUTES.ITEM_TYPE_UID = 1160
条件未实现。
【讨论】:
以上是关于无法将行添加到 SQL Server 视图的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server:无法在视图上创建索引,因为它引用派生表。