在我目前的工作地点,有人决定将 ID 放入逗号分隔的列中。我希望将它们分解成适当的多对多关系。然而; 引用此数据的应用程序不会立即更改。所以我需要修改一个视图以仍然显示逗号分隔的列。设置视图以显示逗号分隔列的最佳方法是什么?有没有一种不涉及离开原始列的方法?
表定义的精简版本如下。
ID
ProductName
FeatureIDs
ID ProductName FeatureIDS
1 Hot dog 1,5,4
2 Hamburger 1,3
3 Fish 2
ID
FeatureName
ID FeatureName
1 Mayo
2 TarTar Sauce
3 Pickle
4 Relish
5 Onion
最后,我想将这些组合成一个产品表和多对多关系
ID ProductName 产品类型
其中产品类型可以是“产品”或“功能”
ID productid featureid
对于映射表。
是的,设置的视图需要是可更新的视图。
视图可以做这样的事情(显然我已经猜到了表/列名):
然而,正如@Martin 在评论中指出的那样,如果该视图希望针对视图而不是基表执行任何 DML,则该视图将破坏应用程序。
INSTEAD OF
您可以按照他的解释设置触发器来避免此问题。除了演示方面之外,可能在其他方面也有用的相关帖子:
http://www.mssqltips.com/sqlservertip/2074/make-your-sql-server-database-changes-backward-compatible-when-changing-a-relationship/