Как установить автоинкремент sql server
Перейти к содержимому

Как установить автоинкремент sql server

  • автор:

Как в уже созданной таблице установить автоинкремент для столбца?

выдает ошибку: Сообщение 102, уровень 15, состояние 1, строка 1
Неправильный синтаксис около конструкции «AUTOINCREMENT».

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как правильно получить ID автоинкремент вновь созданной записи в таблице
Добрый день. Использую DbContext для работы с MSSQL, подскажите как правильно получить ID.

Ограничение значений в столбце в уже созданной таблице
Здравствуйте! Работаю в MySQL WorkBench. Скажите пожалуйста, если я уже создал таблицу, то можно.

Как для созданной таблицы изменить тип столбца
Где можно изменить тип данных таблицы в IBConsole

C++ Builder 6. Как инициализировать Shape на уже созданной форме
Ребят, первый раз надо написать программку на плюсах, нужен небольшой хелп. Использую Builder 6. .

Автоинкремент ключа в Sql Server

Учтите только что установить это свойство не так просто на существующую таблицу. это уже обсждалось на форуме .. если Вам вдруг понадобится.

progstone

2sax_ol скрипты конечно генерирует,но галочку автоинкремент ключа,как в клиентах MySql вроде MySQL-Front я не обнаружил.Сама она создает так или чуть иначе
USE [first]
GO
/****** Объект: Table [dbo].[films] Дата сценария: 10/19/2007 18:22:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[films](
[name] [nvarchar](50) NULL,
[id] [nchar](10) NOT NULL,
CONSTRAINT [PK_films_1] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = ON, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 1) ON [PRIMARY]
) ON [PRIMARY]

2Barmutik Не понял что это такое,появилась таблица с елементом NULL, и не заполняется.

Я так подозреваю что принципы здесь несколько отличны от access или MySql,
подскажите книгу по диалекту sql для Microsoft SQL Server 2005.

Barmutik

Для: progstone

Таблица с полем автоинремента .. а остальные поля уж сами ручками добавьте ..
Понятно что это поле Вы изменять не можете потому как оно ж автоматически заполняется

T-SQL автоинкремент и создание индекса в команде CREATE TABLE

однако, что из с# вылезало исключение, что сейчас из server management, в общем, похоже, что t-sql не считает «. » строковой константой! Хотя везде она в «».

#1
20:53, 29 дек 2010

а в с# как строку создаешь запроса?

#2
21:03, 29 дек 2010

//myCommand = new SqlCommand("INSERT INTO States (STATE) VALUES (\"new\")", sc); //myCommand.ExecuteNonQuery();

а вот каковы ошибки в программе management-е

IF EXISTS ( SELECT name FROM sysobjects WHERE name = "Create_Tables" AND type = "P" ) DROP PROCEDURE Create_Tables GO

Msg 207, Level 16, State 1, Line 8
Недопустимое имя столбца «Create_Tables».
Msg 207, Level 16, State 1, Line 9
Недопустимое имя столбца «P».

  • AlexKhomich
  • Постоялец

#3
22:29, 29 дек 2010

А почему кавычки двойные «. Надо одинарные юзать ‘.

#4
12:22, 30 дек 2010

не знаю, в MySQL юзал вроде одинарные, а тут — ссылку видишь? Самый лучший университет Рунета INTUIT.ru — там везде двойные кавычки!

#5
13:03, 30 дек 2010

КО: SQL разрешает оба вида кавычек

По T-SQL полно литературы, и на русском языке тоже.

#6
14:29, 30 дек 2010

oistalker
> полно литературы, и н
Пока идут заказанные книги %) позволю себе спросить
Есть ли способ создать таблицу сразу с индексом?
В этом руководстве написано про create index.
— зачем индексу имя? Разве не при любом добавлении записи в таблицу будут освежены все индексы, существующие для неё?
— нельзя ли как-нибудь сразу, как я делал в MySQL ?

$sql = «CREATE TABLE trbl
( N int NOT NULL AUTO_INCREMENT,
PRIMARY KEY (N),
AUTHOR varchar(32),
DATE varchar(32),
KEY (DATE),

сейчас я не умею в T-SQL сделать поле авто-инкремент (хотя нагуглил конструкцию IDENTITY(1,1) — выглядит страшно — другой альтернативы нет?) и индекс при создании, только через отдельную директиву CREATE INDEX.
Первичный ключ, правда, создавать умею (ID int NOT NULL PRIMARY KEY), а вторичные нет.

Может Вы умеете?

без авто-инкремента не удается добавить запись в таблицу, т.к. поле N не указываю явно, а оно не должно быть NULL. Почему эта ошибка возникает, я знаю, и объяснять не нужно. Как бы Вы сделали авто-инкремент?

#7
14:45, 30 дек 2010

Почему бы не просто, —

CREATE TABLE Tab1 (N int PRIMARY KEY ASC,
Author varchar(32),
.

? Сам по себе PRIMARY KEY, как атрибут поля — означает автоинкрементируемое значение.

Впрочем это не T-SQL, это обычный ANSI DDL. Вообще, — MsSQL позволяет использовать в качестве PK — GUID’ы. И даже рекомендуется это делать.

#8
15:14, 30 дек 2010

А ASC обязательно? Оно же вроде как по умолчанию (плюс, для поля ID какая разница, ASC или DESC?)

oistalker
> CREATE TABLE Tab1 (N int PRIMARY KEY ASC,
> Author varchar(32),
> ? Сам по себе PRIMARY KEY, как атрибут поля — означает автоинкрементируемое
> значение.
Разве? Почему тогда вылезает ошибка?

CREATE TABLE States ( ID int NOT NULL PRIMARY KEY, STATE varchar(32) ) myCommand = new SqlCommand("INSERT INTO States (STATE) VALUES ('new')", sc);

Не удалось вставить значение NULL в столбец «ID», таблицы «C:\. dbo.States»; в столбце запрещены значения NULL. Ошибка в INSERT.

#9
16:57, 30 дек 2010

  • AlexKhomich
  • Постоялец

#10
17:32, 30 дек 2010

Насчёт кавычек (quotes), одинарные кавычки это строки а двойные по дефолту имена объектов (как и квадратные скобки) (устанавливается SET QUOTED_IDENTIFIER ON).

Пример SQL создания таблицы:

CREATE TABLE dbo.State ( ID int IDENTITY(1, 1) NOT NULL, CountryCode varchar(10) COLLATE Latin1_General_CI_AS NULL, State varchar(10) NOT NULL, Description varchar(50) NOT NULL, RegionCode varchar(10) NOT NULL, ListSeq smallint NULL, code varchar(30) NOT NULL, submissionId int NULL, PRIMARY KEY (ID ) )

Совет, скачай и установи EMS SQL Manager for SQL Server. Модификация схемы базы удобна в форме конструкора, каждое изменение генерит SQL скрипт. Для начинающих самое то.

#11
17:42, 30 дек 2010

короче ты высказался за то, что профессионалы используют IDENTITY. Зачтём.

Кстати, скрипты нагенерил мне и SQL server management studio. Но не пойду же я показывать нагенеренное, не разбираясь в нём. Надо было руками.
В общем это задание на лабу — создать скрипты генерации таблиц по заданной структуре БД, ну и написать на C# простенькую обработку.

AlexKhomich
> PRIMARY KEY (ID )

а вот KEY (field2) не работает, ошибку выдает 🙁 В MySQL бы сработало 🙁

  • AlexKhomich
  • Постоялец

Как добавить AI в существующую таблицу MySQL?

Как добавить auto increment поле в существующую таблицу MySQL?

короткая ссылка на этот вопрос: close
спросил 10 лет назад

2 ответа

AI всегда должен являться PRIMARY KEY ключём в MySQL. Следовательно, если ваша таблица уже содержит primary key, то сначала нужно удалить первичный ключ, а затем добавлять AUTO_INCREMENT`ное поле. Например:

ALTER TABLE table5 DROP PRIMARY KEY, ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;

Если PK у вас в таблице нету, то можно сразу добавить поле и объявить его AI:

ALTER TABLE table5 ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *