添加电影的存储过程

时间:2012-03-07 18:28:42

标签: sql stored-procedures

我要创建一个用于添加电影的存储过程(我正在处理一个存储和列出带有信息的电影的应用程序),在开始之前我想要一些如何创建它的输入。

我有以下表格:

  1. “电影”(MovieID,姓名,年份,长度,摘要)
  2. “流派”,这是一个流派列表(GenreID,流派)
  3. “MovieGenre”,这是一部电影及其类型。 (MovieGenreID,GenreID,MovieID)
  4. “MovieRole”,存储演员/导演的名称等(MovieRoleID,姓名)
  5. “MovieRoleType”,存储电影的不同角色,如actor(MovieRoleTypeID,MovieRoleType)
  6. “演员”,这是电影演员的列表(CastID,MovieRoleTypeID,MovieID,MovieRoleID)
  7. 添加电影时,您必须提供有关电影的所有信息,以及至少一个电影角色(例如演员)和流派。我应该创建多个SP:s并从一个SP执行它们,或者我该怎么办?

    注意:我不是要求你为我编写整个SP,只是要求一些指导。

    提前致谢!

2 个答案:

答案 0 :(得分:3)

我会创建几个单独的存储过程,然后使用事务来确保插入一起提交。

你将需要单独的SP来添加额外的演员,流派等。对于我来说,拥有一个大的SP以及调用SP来添加的所有支持代码对我来说没有多大意义。一部新电影+角色+流派,然后有单独的SP(和支持代码)来复制角色和流派的添加。使用事务将有效地将所有单独的SP包装成单个操作,使其看起来几乎像一个SP,但也可以灵活地使用单个SP。

无论如何,您将需要支持代码来呼叫每个SP。代码将验证参数,处理错误,设置SP的值等。因此,您需要在应用程序中使用AddRole,AddGenre等功能。我宁愿在我的代码中有一个名为AddMovie的函数,它启动一个事务,然后调用这些函数中的每一个。将工作分解成小的,易于测试的部分,然后通过调用您知道工作的较小部分来构建更大的功能(AddMovie)。构建一个调用不同SP的AddMovie函数要复杂得多,这个函数基本上与你已经完成的工作有很多相同的事情。

答案 1 :(得分:1)

我会为每个实体创建一个sproc,然后可能将它们包装在一个名为“AddNewMovie”或其他任何内容的SP中。

AddNewMovie只会调用其他sprocs。如需额外奖励,请将它们包装在交易中。

如果您不熟悉交易,MSDN会有pretty good article