我有一个来自现有产品的表(因此不可能更改模式),该表具有类似于以下内容的模式:
objectId, typeId, value我需要做的实际上是使几个typeIds相互链接和同步。参见下面的示例。将有大约35套3-4连接的typeIds每套.
我无法找到合理的方法来做这是表演性,处理多行插入和防止触发递归。有什么建议吗?
示例
typeId 1、2和3应该连接起来。
INSERT INTO foo (objectId, typeId, value) VALUES (1, 1, 'bar')应生成包含以下内容的表
╔══════════╦════════╦═══════╗
║ objectId ║ typeId ║ value ║
╠══════════╬════════╬═══════╣
║ 1 ║ 1 ║ bar ║
║ 1 ║ 2 ║ bar ║
║ 1 ║ 3 ║ bar ║
╚══════════╩════════╩═══════╝对这两个记录的值的任何更新都应导致所有记录的值都将被更改。
发布于 2016-04-05 12:22:28
最后,我通过修改应用程序使用的“插入”和“更新”存储过程来解决我的问题,而不是用触发器来解决它。
插入过程最后得到的结果如下:
IF @typeId IN (1,2,3)
INSERT INTO foo (objectId, typeId, value) VALUES (@objectId, 1, @value), (@objectId, 2, @value), (@objectId, 3, @value)
ELSE IF
...
ELSE
INSERT INTO foo (objectId, typeId, value) VALUES (@objectId, @typeId, @value)更新过程最后得到的结果如下:
IF @typeId IN (1,2,3)
UPDATE foo SET value = @value WHERE objectId = @objectId AND @typeId IN (1,2,3)
ELSE IF
...
ELSE
UPDATE foo SET value = @value WHERE rowId = @rowIdhttps://stackoverflow.com/questions/36399193
复制相似问题