我在SQL Server中有一个名为DBSCM
的数据库。我希望将'{1}}表中的'material'复制到ZMATPLANT
表。
FILTER
表:
ZMVCLAS
| valclas | indication |
| 123 | MRO |
| 442 | NO |
表:
ZMATPLANT
| valclas | material |
| 123 | A02 |
| 442 | B03 |
表应该是这样的:
FILTER
如您所见,表格已在| mn |
| A02 |
列上关联。 过滤表中仅显示带有indication ='MRO'的'material'。
查询:
valclas
错误:
Msg 4104,Level 16,State 1,Procedure TR_zmatplant_INSERT,Line 10
无法绑定多部分标识符“zmatplant.val_class”。Msg 4104,Level 16,State 1,Procedure TR_zmatplant_INSERT,Line 10
无法绑定多部分标识符“dbo.zmvclas.valcl”。Msg 4104,Level 16,State 1,Procedure TR_zmatplant_INSERT,Line 11
无法绑定多部分标识符“zmvclas.valcl”。
答案 0 :(得分:0)
问题是您是否引用了尚未包含在查询中的表格。
我认为这会解决问题
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
</head>
<body>
<div>
This is a test page
<p>
<i class="material-icons">face</i>
<i class="large material-icons">face</i>
<i class="material-icons md-18">face</i>
<i class="material-icons dark">face</i>
</p>
</div>
</body>
答案 1 :(得分:0)
我会提醒您,这是一个诱人但不恰当的使用触发器。诱人因为它看起来很自动,并且看起来像是面向对象的代码。不恰当,因为应保留触发器以强制执行参照完整性。
当用于数据一致性时,就像这里一样,它们不可避免地会导致问题。如果触发器遇到问题,它只能引发回滚(你没有做)。它提出的任何消息都是神秘且不受欢迎的,因为它缺乏关于用户正在做什么的上下文信息。除非在数据库中 ,否则它不能设计为有时回滚而不能回滚。它无法有效地报告,例如,zmvclas
缺少相应的行,filter
因此为空。
由于错误模式会快速增加,因此最好将问题限制为必须维护的内容,即参照完整性。 RI不需要任何用户上下文:数据错误,回滚是唯一合适的操作。
最好是将filter
视为一种观点。如果它必须是表,请使用存储过程和事务来更新两个表。这样你就可以检查以确保你得到你所期望的,并引发用户可以理解的错误。