存储过程未声明主键

时间:2015-11-27 13:47:11

标签: sql sql-server stored-procedures

对我所确定的是一个非常基本的问题抱歉。我刚刚潜入sql的深层并随时学习。

a)在存储过程(sql server 2012)中,如果我没有将其中一个返回值声明为主键,是否会创建一个?因为在我正在做的情况下,我没有计划一个密钥,并且没有一个字段可以用作一个。

b)如果我必须设置密钥,那么代码是什么?我可以卷入这个问题,如何通过SELECT每次运行都有一个计数器增量(因为如果我必须设置一个键,我可能会使用它)?

ETA 我刚刚看到了游标的概念,从中我认为你不需要管理系统的主要字段来保持其行的识别。
@L。 Klotz,因为你提供了一种制作密钥的方法:如果系统有自己的密钥,在什么情况下你会使用一个明确设置的密钥? 并且要清楚,我会把它放在下面吗?

ALTER PROCEDURE [dbo].[partsneed] 
   id INT PRIMARY KEY AUTO_INCREMENT
   ,@PartIDIN varchar(20)=0
   ,@COstatusIN char=0
   ,@QTYneedIN float=0
   ,@DateNeedIN date='1900/1/1'
   ,@QTYhrsIN float=0

1 个答案:

答案 0 :(得分:0)

我不确定您为什么需要主键,但代码示例和进一步说明会有所帮助。您可以尝试以下方式:

SELECT 
    row_number() OVER (ORDER BY name) id
        ,[name]
FROM [mydb].[dbo].[names]

创建新的自动增量列。