0

私のテーブルの1つに自動番号フィールドShiftPkが含まれていますが、これはそのテーブルの主キーとして使用されていますが、レコードに値を挿入すると、生成された主キーはシーケンシャルキーではありません

自動番号は常に連続している必要はありませんが、他のすべての自動番号は順番に機能しています。以下のスクリプトを見つけて、問題が私の部分にある場合はアドバイスしてください。

   ****** Object:  Table [dbo].[ShiftMasterNew_tbl]    Script Date: 03/09/2013 13:21:13 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[ShiftMasterNew_tbl](
    [ShiftPK] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
    [ShiftName] [varchar](50) NOT NULL,
    [Duration] [numeric](18, 0) NULL,
 CONSTRAINT [PK_ShiftMasterNew_tbl] PRIMARY KEY CLUSTERED 
(
    [ShiftPK] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY],
 CONSTRAINT [IX_ShiftMasterNew_tbl] UNIQUE NONCLUSTERED 
(
    [ShiftName] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

この表の自動番号が他の表と異なる理由

4

2 に答える 2

0

データはどのようにテーブルに挿入されますか?ID列にギャップがあると思われるため、たとえば次のようになります。

1
2
5
6
8
9
10
15

...これはおそらく、データがテーブルに挿入されているときに何かが間違っているという症状です。更新プロセスに関する詳細情報をに追加できますOPか?

コメントが言っているように-それは間違いなくSEQUENTIALになりますが、ギャップがあるかもしれません。それらがシーケンシャルであることを証明する必要がある場合は、「WhenUpdated」などのDateTimeフィールドに追加できますか?

于 2013-03-09T11:07:41.047 に答える
0

私は問題を見つけたと思います..挿入しようとして失敗した場合も識別子を消費しています

たとえば、1 2 3を挿入した後、挿入に失敗した場合

次に挿入した場合、その識別子は

5

于 2013-04-23T12:37:22.103 に答える