1

我有一个任务存档一些数据库表。为了简化一切,我基本上必须执行以下操作:

  1. 根据某些条件从表 1 中检索一些行
  2. 将这些行插入备份数据库中的表中
  3. 从表 1 中删除这些行

我必须在几个表上执行这些操作。

本文告诉我根据不同的 CRUD 操作(每个 CRUD 一个)创建单独的 SP。可以看到,我需要执行的步骤是READUPDATEDELETE。然后根据这篇文章,我的每张桌子都需要 3 SP。所以如果我有 10 个表需要备份,那么我需要写 30 个 SP?

有人可以告诉我这是否是正确的做法吗?

谢谢。

4

2 回答 2

2

代表我的学习曲线:当我开始使用数据库时,我并不太关心我现在所做的事情。最简单且更“合乎逻辑”的方法是在一个 SP 中执行 CRUD,因为根据您的场景,事情很小。但是当涉及到可扩展性时,您确实需要将它们分开。开始构建您的程序是一个好习惯。要指出的另一件事是,您可以应用到数据库的顺序越多越好。

关于必须 CRUD 10 表。不,您不需要 30 个 SP(也许您会这样做,但这种情况不太可能发生)。您可以使用变量、参数和其他内容,以便使用参数(用于表名等)对多个表执行 READ。与其他 CRUD 的操作相同。

所以,简而言之:也许你最终会拥有一个大而复杂的 SP 来读取表。但就是这样,你努力一次,然后你一次又一次地重复使用。(这是一件好事;如果您不了解 OOP,它将在未来帮助/拯救您)

于 2012-08-07T20:09:22.647 回答
0

考虑一个存储过程来概述您想要执行的某种功能。您正在尝试将数据存档在表中,因此我将调用存储的 proc dbo.Archive_Table1。“Archive_”是表示过程操作的前缀,后缀是您要操作的对象(或多个对象)。

举个简单的例子,假设您要将数据归档在几个表中,这些表都与汽车数据相关。dbo.Make、dbo.Model、dbo.Sales 等。您可以创建一个名为 dbo.Archive_Cars 的存储过程,它作用于所有这些表。它足够冗长,可以告诉任何看到它的人您正在尝试做什么。

在你的新存储过程中,随意做任何你想做的事情。一起进行插入和删除!不必处理 30 个 SP,这将使您的生活轻松一千倍。当然,稍后您可能最终会创建一些其他 CRUD SP,但请根据需要进行。

您在问题中的大纲是完美的;只需将其转换为代码即可。

于 2012-08-07T20:18:36.993 回答