exp |
Отправлено: 15.05.2006, 13:37 |
|
Мастер участка
Группа: Участник
Сообщений: 304
|
Пусть есть таблица Dealer(ID int, Name char(50))
Как сделать так, чтобы добавление происходило по имени, а ID присваивался автоматически.
Пример
1)
ID Name
1 Вася
2 Петя
3 Вова
4 Гоша
2) Удаляем Вову (после чего в полях id будет "дырка", из-за удаления тройки)
3) Добавляеме Рому, но ему присваивается ID не 5 а 3
Проще говоря, надо организовать "закрытие дырок"
Может есть какие-то стандартные средства у Server 2000? а то не хочется изобретать велосипед
Большое спасибо за участие
|
|
Gedeon |
Отправлено: 15.05.2006, 14:13 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Не очень давно обсуждали тут, поищите.
|
|
avc* |
Отправлено: 15.05.2006, 14:40 |
|
Не зарегистрирован
|
QUOTE (exp @ 15/05/2006, 13:37) |
...надо организовать "закрытие дырок"
|
А зачем?
Это вредная привычка. Вся прелесть автоинкрементного первичного ключа в том что он в обозримом периоде времени не повторяется.
Обычно это смущает только некоторых конечных пользователей. В этом случае есть два пути:
1. Объяснить, что это "не больно"
2. Сделать доплнительное поле "для красоты", заполняемое как хочется и видимое пользователю, а PK оставить как есть. |
|
exp |
Отправлено: 15.05.2006, 20:34 |
|
Мастер участка
Группа: Участник
Сообщений: 304
|
2avc:
Тото и оно, что с базами данных я постольку-поскольку. И не знаю как сделать это самое автоинкрементное поле.
// Хоть узнал, как это назназывается
2Gedeon
Поищу.
|
|
AVC |
Отправлено: 16.05.2006, 08:10 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE |
// Хоть узнал, как это назназывается
|
Вы не поняли. "Закрывание дырок" и автоинкрементное поле — это противоположности. Автоинкремент как раз и является первопричиной "дырок".
Как сделать автоинкремент это зависит от СУБД и gedeon подсказал где начать искать. |
|
Shagg |
Отправлено: 23.05.2006, 11:56 |
|
Не зарегистрирован
|
Если в MSSQL, то для поля ID можно установить свойство Identity, тогда оно будем автоинкрементным, уникальным и не будет позволять пустых значений.
А вставлять можно простым запросом:
Insert into Dealer(Name) Values('Чебурашка') |
|
VilgelmKaizer |
Отправлено: 05.10.2006, 17:33 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 38
|
Не надо парить неопытных программером свои остроумием.
Автоинкрементное поле создается так:
Например мы создаем таблицу(для MS SQL server)
create table TEMP(
t_ID int identity(1, 1) not null primary key,
t_Name varchar(255)
t_usr_ID int not null default(0))
в этом случае identity(1, 1) — говорит о том что это поле д.б. автоинкрементным, первая единичка- это начальное значение, а вторая это шаг. при вставе новой записи в это поле вставляется значение на 1 боьше чем в прошлый раз. Вот и все. Легко? Да проще пареной репы.
Нужно только знать синтаксис. |
|