繁体   English   中英

SQL存储的proc-请帮我写一个!

[英]SQL stored proc - help me write this one, please!

您能帮我这个忙吗:

在我的一个脚本中,我正在一些表“ Item”中插入一些数据。 “项目”表中的列之一是“项目编号”。

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

我不能使用AutoIncrement,因为ItemNumber是唯一的,并且在不同的脚本中我在已经具有“ ItemNumber”的 “ Item”中插入数据时可能会发生冲突

我只知道“ ItemNumber”的最大编号,此后我可以自由使用任何东西。

我需要一个用于该storedProc的表来存储要使用的下一个数字,对吗?

我正在考虑创建一个包含MaxNumber和存储过程的单列表,该表将返回MaxNumber 并将MaxNumber递增1以供下次使用

我需要帮助 INSERT INTO Item调用中编写存储的proc及其用法。

编辑:

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

请帮助!

谢谢,

巫毒

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

如果在字段上使用IDENTITY约束,则服务器将不允许重复的实例。 如注释之一所述,在这种情况下,该值是在服务器上计算的,并且您的应用程序不(通常情况下也不能)提供它。

请注意,服务器不保证数字将是连续的-如果您执行插入操作并中止事务,则本来会使用的值将“丢失”-服务器将不会再次提供。

如果需要连续的ID号,则需要以串行方式访问以更新表,这将需要管理并且效率不高。 (您仍然可以将其声明为IDENTITY列,但是每次更新时都需要为该表设置IDENTITY_INSERT On。)

额外:

可能有点麻烦,但可能适用于一次性情况。 您是否考虑过将数据复制到设置了ID的新表中,然后应用IDENTITY约束,然后插入具有NULL ID的表(允许服务器为您分配它们?),这可能会解决您在此处的特定问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM