2015-10-04 3 views
0

Я создал следующую таблицу для квартир и использовал автоинкремент на столбце ApartmentID. Я подумал, как только я установил этот автоинкремент на 101, он будет автоматически увеличиваться в строках по мере ввода, но я просто получаю нулевое значение.SQL Server 2012 - Auto Increment and Null/Not Null

My Create table code is; CREATE TABLE квартир ( ApartmentID SMALLINT, - AUTOINCREMENT = 101, SMALLINT NULL арендатор по умолчанию 0, Аренды денег по умолчанию 0, CurrentOccupier SMALLINT NULL, )

Потому что я автоматическое приращение включенного в моем создании таблицы , Я вставляю значения следующим образом; INSERT INTO dbo.Apartments (оккупанта, аренды, CurrentOccupier) значений ('1', '400', '21'), ('0', '450', '90'),

The следующий мой результат; ApartmentID арендатора Аренда CurrentOccupier NULL 1 400,00 21 NULL 0 450,00 90

обеспокоены тем, что столбец ApartmentID показывал NULL вместо 101, 102, 103 и т.д., и думать, что это было связано с колонки собственности нуль, я выронил таблица воссоздала его следующим образом;

CREATE TABLE Квартиры ( ApartmentID SMALLINT NOT NULL, - AUTOINCREMENT = 101, SMALLINT NULL арендатора по умолчанию 0, Аренда деньги по умолчанию 0, CurrentOccupier SMALLINT NULL, )

Результат/сообщение I получено Msg 515, уровень 16, состояние 2, строка 1 Невозможно вставить значение NULL в столбец 'ApartmentID', стол 'Apartment_2.dbo.Apartments'; столбец не разрешено nulls. INSERT терпит неудачу.

Я хотел бы работать с первой созданной мной таблицей, если бы я мог получить значения 101, 102 и так далее в столбце ApartmentID, когда я запускаю запрос, выберите * из квартиры вместо слова null.

Любая/советная помощь будет оценена по достоинству. Опять же, это может быть простая ошибка, но, будучи новым, я не распознаю свою ошибку. Также я включил - infront автоматического увеличения, поскольку я видел это онлайн.

Благодаря Джози

ответ

1

В SQL Server вы объявите столбец как IDENTITY не Autoincrement. Синтаксис объявить такой столбец, посеянных на 101 является

CREATE TABLE Apartments 
( 
ApartmentID smallint NOT NULL IDENTITY(101,1) PRIMARY KEY, 
Occupier smallint NOT NULL default 0, 
Rent money NOT NULL default 0, 
CurrentOccupier smallint NULL 
) 

Я предположил, что, вероятно, вы хотите, этот столбец будет первичным ключом. Удалите эти ключевые слова, если это не так.

+0

@Martin ..... Спасибо за это. Но тогда возникает следующий вопрос: почему колонка идентификатора работает, а автоинкремент не работает? Должны ли они оба не дать тот же результат? – Josie

+0

@Josie SQL Server не использует этот синтаксис 'autoincrement'. Это MySQL. Это разные продукты и используют разные диалекты SQL. –

+0

@ Мартин .... Теперь я чувствую себя глупо, но спасибо за разъяснение для меня. – Josie

0

Пожалуйста, попробуйте приведенный ниже код. Это должно помочь вам.

CREATE TABLE Apartments (ApartmentID smallint IDENTITY(101,1) NOT NULL, Occupier smallint NULL default 0, Rent money default 0, CurrentOccupier smallint NULL);