代码之家  ›  专栏  ›  技术社区  ›  VoodooChild

SQL存储过程-请帮我写这个!

  •  0
  • VoodooChild  · 技术社区  · 14 年前

    你能帮我一下这个吗?

    在我的一个脚本中,我将一些数据插入到某个表“item”中。“item”表中的一列是“itemNumber”。

    我希望能够调用某个函数(最可能是存储过程),在该函数中,它将返回一个可用于itemnumber的数字。

    我不能使用autoincrement,因为itemNumber是唯一的,当在不同的脚本中插入“item”中的数据时,可能会发生冲突。 已经有“项目编号”

    我只知道“itemnumber”的最大值,之后我可以自由使用任何东西。

    我需要一张表来存储下一个要使用的号码,对吗?

    我正在考虑创建一个单列表,其中包含maxnumber和storedproc,它将返回maxnumber 并将maxnumber增加1以备下次使用

    我需要帮助写存储过程和它的用法 与在 这个 INSERT INTO Item 打电话。

    编辑:

    基本上,我从5个旧表中获取数据,其中itemNumber为空或已设置。对于已设置的,它们都是唯一的数字。 对于itemNumber为空的数据,我想分配它,最好的方法是什么?

    请帮忙!

    谢谢,

    巫毒

    1 回复  |  直到 14 年前
        1
  •  2
  •   Ragster    14 年前

    (假设SQL Server-可能适用于大多数SQL实现)

    如果在字段上使用标识约束,服务器将不允许存在重复的实例。正如其中一条注释所指出的,在这种情况下,该值是在服务器上计算的,而您的应用程序没有(并且在正常情况下不能)提供它。

    请注意,服务器不保证这些数字是连续的-如果您执行插入并中止事务,那么将使用的值将“丢失”-服务器将不再提供它。

    如果您需要具有连续的ID号,则需要具有serlialised访问权限来更新表,您需要管理该表,但这并不高效。(您仍然可以将其声明为标识列,但需要为每个更新的表设置标识插入。)

    附加:

    可能有点笨拙,但可能适用于一次性场景。 您是否考虑过将数据复制到一个新表中,在该表中设置了ID,然后应用标识约束,并插入ID为空的表(允许服务器为您分配这些表?) 这可能会解决你的具体问题。