首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过触发器同步一组表记录

通过触发器同步一组表记录
EN

Stack Overflow用户
提问于 2016-04-04 09:41:32
回答 1查看 24关注 0票数 0

我有一个来自现有产品的表(因此不可能更改模式),该表具有类似于以下内容的模式:

代码语言:javascript
复制
objectId, typeId, value

我需要做的实际上是使几个typeIds相互链接和同步。参见下面的示例。将有大约35套3-4连接的typeIds每套.

我无法找到合理的方法来做这是表演性,处理多行插入和防止触发递归。有什么建议吗?

示例

typeId 1、2和3应该连接起来。

代码语言:javascript
复制
INSERT INTO foo (objectId, typeId, value) VALUES (1, 1, 'bar')

应生成包含以下内容的表

代码语言:javascript
复制
╔══════════╦════════╦═══════╗
║ objectId ║ typeId ║ value ║
╠══════════╬════════╬═══════╣
║        1 ║      1 ║ bar   ║
║        1 ║      2 ║ bar   ║
║        1 ║      3 ║ bar   ║
╚══════════╩════════╩═══════╝

对这两个记录的值的任何更新都应导致所有记录的值都将被更改。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-05 12:22:28

最后,我通过修改应用程序使用的“插入”和“更新”存储过程来解决我的问题,而不是用触发器来解决它。

插入过程最后得到的结果如下:

代码语言:javascript
复制
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)

更新过程最后得到的结果如下:

代码语言:javascript
复制
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 = @rowId
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36399193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档