1

我需要你的智慧。我正在对从经典 asp 到 mvc 的系统进行大修,并且在此过程中,我正在重构 sql server 2008 r2 中的一个主表(称为 MAIN)。该表有一百多列(我对此不负责),我将结构移动到 7 个表以提高性能、灵活性和可维护性。但是,新旧代码在许多新旧页面中都引用了 MAIN 表。我想平稳而渐进地过渡到新表,它是业务的一个活跃的核心站点。请帮帮我。

一旦我转移了现有数据,

我想过:

1.) 在主表和七个新表上使用标准插入、更新和删除触发器。对于无限触发循环,我必须包含一个 catch (http://stackoverflow.com/questions/2237499/sql-server-trigger-loop)。

2.) 创建一个模拟主表的视图,引用新表。我会在视图上使用 INSTEAD OF 触发器来通过视图插入和更新表。这将允许我立即删除 MAIN 表。

其中哪个更有意义?要么是极其愚蠢的吗?两个都?我绝对不是 dba,但我需要在第一时间做到这一点。

谢谢你。

4

1 回答 1

0

听起来您的应用程序正在直接访问数据库表,因为您现在发现这不是一个好主意。

您是否考虑编写存储过程来处理 CRUD 操作,这将抽象出数据库设计?然后您可以从您的应用程序中调用存储的过程并将所有数据作为参数传递。存储过程将完成更新所有新表的所有工作(当然您应该使用事务),您可以立即停止使用旧表。

我认为这比尝试编写复杂的视图更容易,并且肯定比使用触发器更能看到。

于 2012-07-04T22:50:14.070 回答