【问题标题】:Generic stored procedure通用存储过程
【发布时间】:2013-12-25 19:50:41
【问题描述】:

我想编写一个存储过程,在表中创建一条记录并使用这条插入的记录更新另一个记录。

问题是,我必须对数据库中的所有表都这样做。

例如

我有这四个表:

Person;
Address;
Question;
User;

还有一张桌子:

TimeStampRegistry

这最后一个表必须为每个表的每条记录创建一条记录,并将其链接到另一个表注册表。当我在Person 中插入一条记录时,我必须在TimeStampRegistry 中插入一条记录,并链接两条记录。

那么,我的问题是:如何只使用一个存储过程来控制数据库中所有表的插入或更新?

【问题讨论】:

  • 您可以创建一个存储过程来执行您需要的操作,然后使用触发器调用它 - technet.microsoft.com/en-us/library/ms189799.aspx。您可以有一个 source 输入参数,对于触发器中的每个过程调用,该参数将是不同的。
  • 如果你想在 TimeStampRegistry 中插入一些东西,只要有插入到其他表中,你应该查看一个 INSERT 触发器(不是存储过程)

标签: sql sql-server stored-procedures


【解决方案1】:

创建一个单独的 SP 并传递给它一个 int
表示表名的参数。

例如: 1人; 2 - 地址; 3 - 问题; 4 - 用户。

然后在您的 SP 中编写一些 IF-ELSE 逻辑。

或者...只需传递表名并构建
您的 SQL 语句是动态的。

但如果表模式差异很大,我不会
认为你可以用一种通用的、很好的方式来做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 2011-03-13
    • 2016-10-19
    • 1970-01-01
    相关资源
    最近更新 更多