Почему таблица данных в VB 2010 и SQL Server начинается с отрицательного первичного ключа? - PullRequest
0 голосов
/ 26 мая 2011

Я определил базу данных с помощью SQL Server 2008 R2 Express и подключился к ней с помощью Visual Basic 2010 Express.Однако по какой-то причине, когда я использую базу данных в программе, она хочет начать с использования отрицательного первичного ключа.

Можно ли сделать первичный ключ только положительным числом?

Ответы [ 3 ]

2 голосов
/ 26 мая 2011

В дополнение к ответу @RNarry Young.Вы можете проверить схему, если ваша таблица

Предположим, у вас есть следующая таблица

create table #t
(
    ID int Identity(-1, 1),
    s varchar(100)
)

Теперь вы делаете две вставки

Insert into #t(s) values('ed')
Insert into #t(s) values('ed')

Проверьте вывод

select * from #t

Это показывает, как показано ниже.Если вы видите снимок экрана. Первая строка показывает -1 в значении первичного ключа .В связи с тем, что в схеме указано Identity Seed -1.

enter image description here

Вы можете избавиться от этой проблемы.Мы должны использовать схему, как показано ниже.

 create table #t
    (
        ID int Identity(1, 1),
        s varchar(100)
    )

Ниже приведен другой способ генерации

Set Identity_Insert #t On
Insert into #t(ID, s) values(-1, 'ed')
Set Identity_Insert #t OFF

Set Identity_Insert #t On 
Insert into #t(ID, s) values(-2, 'ed') 
Set Identity_Insert #t OFF
0 голосов
/ 26 мая 2011

Идентификационное зерно для таблицы будет видно в SSMS.

Но .... не имеет значения, что оно дает отрицательные числа.На самом деле есть только две практические проблемы, связанные с вашим значением идентичности:

  1. Уникальные значения
  2. Достаточно места для охвата ожидаемого диапазона значений (поэтому ключ tinyint не подойдет для отслеживаниявсе население мира ...)

После того, как они отсортированы, фактические значения не должны вызывать беспокойства.Они являются внутренними для базы данных.

0 голосов
/ 26 мая 2011

От руки Я могу думать только о двух вещах, которые могут вызвать это:

  1. При создании таблицы, которую вы (или какое-либо программное обеспечение / код, который вы используете) устанавливаете для Identity seed вотрицательное число.

  2. Или вы (или используемое вами программное обеспечение / код) используете Identity_Insert и просто вводите отрицательное число в.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...