Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2009, 10:27   #1
Абдуллаев Рустам
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 37
По умолчанию Автоинкрементация с другой стороны(sql server 2000)

Всем Привет!!!
Имеется база данных, и в ней таблица, созданная в sql server 2000
Код:
create table Users (
       Us_Id bigint identity (1,1) not null Primary key,
       Surname_us  char(30) not null,
       Name_us char(20) not null,
       Lastname_us char(30) not null,
       Pos_Id integer not null foreign key
                                  references Positions(Pos_Id)
                    )
Создаю приложение, в котором добавляю записи в эту таблицу и удаляю из нее соответственно, так вот, удалив запись, например под номером 125, а потом записывая снова, номер новой записи становится 126, т.е если я даже полностью удалю все записи в таблице, и потом начну заполнять ее, то нумерация начнется не сначала, не с 1, а с той записи, которая была последней+1. Хочется чтобы в таблице был порядок. Есть ли возможность изменить это положение?
mol4ok
Абдуллаев Рустам вне форума Ответить с цитированием
Старый 02.05.2009, 12:41   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

удалить целиком таблицу а потом вновь ее создать
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.05.2009, 13:08   #3
Абдуллаев Рустам
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 37
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
удалить целиком таблицу а потом вновь ее создать
Да, но я так пробовал, если я создам ее также, то все будет после этого также. Но у меня приложение в процессе, поэтому даже этот способ не подойдет, нужно сделать не удаляя таблицу.
mol4ok
Абдуллаев Рустам вне форума Ответить с цитированием
Старый 02.05.2009, 19:07   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

все начинающие наступают на одни и те же грабли
такая тема точно была и не так давно

автоинкрементное поле вводится для уникальности каждой записи
если тебе нужно чтобы какое-то поле имело непрерывный номер вне зависимости от удаленных/добавленных строк в таблице, то вводи дополнительное поле, неавтоинкрементное, значения которого будешь отслеживать и изменять при необходимости по всей таблице самостоятельно

наверняка у тебя будет какая-нить таблица, которая хоть и неявно будет ссылаться на эту самую таблицу, и если ты будешь постоянно изменять уникальные значения первичного ключа, то и в ссылочных таблицах его тоже придется менять - короче, один гемор и доп.поле рулит
soleil@mmc вне форума Ответить с цитированием
Старый 02.05.2009, 19:14   #5
Абдуллаев Рустам
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 37
По умолчанию

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
все начинающие наступают на одни и те же грабли
такая тема точно была и не так давно

автоинкрементное поле вводится для уникальности каждой записи
если тебе нужно чтобы какое-то поле имело непрерывный номер вне зависимости от удаленных/добавленных строк в таблице, то вводи дополнительное поле, неавтоинкрементное, значения которого будешь отслеживать и изменять при необходимости по всей таблице самостоятельно

наверняка у тебя будет какая-нить таблица, которая хоть и неявно будет ссылаться на эту самую таблицу, и если ты будешь постоянно изменять уникальные значения первичного ключа, то и в ссылочных таблицах его тоже придется менять - короче, один гемор и доп.поле рулит
Насчет начинающего точно правы, я кажется понял, я создаю дополнительное поле в базе, куда при внесении какой-то записи записываю без автоинкримента числа,1,2 и так далее, и причем сразу же idникам с автоинкриментом присваиваю эти значения, как контроль некий, и у меня есть таблица при этом, которая ссылается на эту, там тоже все менянется, подобно главной, но там получается будут уже значения из дополнительного поля?
mol4ok
Абдуллаев Рустам вне форума Ответить с цитированием
Старый 02.05.2009, 20:49   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

неа
мой опус был как раз о том, что автоинкрементное поле надо оставить в покое - ибо не дело это апдейтить праймари кей и все ссылки на него (хотя в парадоксе их и нет, но в будущем такая практика покажет все минусы ее применения)
заводи отдельное поле и извращайся "на здоровье"
soleil@mmc вне форума Ответить с цитированием
Старый 02.05.2009, 21:29   #7
Абдуллаев Рустам
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 37
По умолчанию

Я делал в sql server 2000. И заводить отдельное, мне кажется сейчас это уже трудоемко, все придется менять, и раз-ся в этом, в принципе так как есть пока внутри и работает на своем уровне нормально. Хотя в будущем там после многих удалений и вставок будут огромные числа.
mol4ok
Абдуллаев Рустам вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
баги в MS SQL Server 2000 vbilez БД в Delphi 8 03.04.2009 14:30
Книги по MS SQL Server 2000 Shavminator SQL, базы данных 4 18.10.2008 15:12
кодировка в MS SQL Server 2000 rubi БД в Delphi 1 14.03.2008 12:51
MS sql server 2000 Domovoy SQL, базы данных 1 29.10.2007 10:37