这是使用存储过程执行CRUD的正确方法吗?

时间:2012-08-07 19:58:49

标签: sql stored-procedures

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

  1. 根据某些条件从表1中检索一些行
  2. 将这些行插入备份数据库中的表
  3. 从表1中删除这些行
  4. 我必须在几个表上执行这些操作。

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

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

    感谢。

2 个答案:

答案 0 :(得分:2)

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

关于必须使用CRUD 10表。不,你不需要30个SP(也许你会这样做,但这是一个非常不可能的场景)。您可以使用变量,参数和填充,以便使用参数(对于表名等)对多个表执行READ。与其他CRUD的操作相同。

因此,简而言之:也许你最终只有一个庞大而复杂的SP来读表。但就是这样,你努力工作一次,然后你又一次又一次地重复使用。 (这是一件好事;如果你不知道OOP,它将在未来明确地帮助/拯救你)

答案 1 :(得分:0)

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

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

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

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