Как в уже созданной таблице установить автоинкремент для столбца?
выдает ошибку: Сообщение 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;