|
Тема
|
Защо става така?
|
|
Автор |
hrisunko (Наблюдател) |
Публикувано | 29.08.01 14:15 |
|
Клектака ми ID е auto_increment. Имам 3 реда с информация:
1 |
----------
2 |
----------
3 |
-----------
и ако изтрия ред 3, следващият ред, който въведа ще бъде с ID = 4.
1 |
-------
2 |
-------
4 |
------
Защо става така? И има ли шанс след като ред е изтрит да се добавя номер по-голям с 1 от предходния?
| |
|
аз да се обадя, макар че не съм сигурен дали има sql решение
аз не ползвам auto_increment по същите причини, а count() или max() като увеличавам с едно
но нека sql експертите да се изкажат по въпроса
който спре - умира
| |
Тема
|
Re: Защо става така?
[re: hrisunko]
|
|
Автор | edmon (Нерегистриран) |
Публикувано | 29.08.01 16:07 |
|
tfa sigurno e ritorichen vypros:))
procheti si postinga i kato stignesh do auto_increment se zamisli ko znachi:)
ama aide... tfa e edno takova deto koto i da pravish se se uvelichva i si pazi tekushtata stoinost niakyde drugade i ne moe go vyrnish nadolu do tri sled kato e stignalo do 4:)
| |
|
Пруи добре организираната (проектирана) база от данни не би трябвало логиката на програмат да зависи от стойността на PRIMARY KEY а е достатъчно той да уникален. Ако искаш наистина стойностите да са поредни зипозвай max() функция, но за да си сигурен ще трябва да заключваш цялат таблица. Което не е добре. Ако ще ти трябава да извеждаш данните по реда на постъпването им използвай си добави още една колона за време и сортирай по нея!
Успех.
| |
|
До версия 3.22 работеше точко както ти очакваш ако изтриеш последния след това ти връща пак неговия номер. Но доколкото си спомням имаше дискусия че това не е правилно и в 3.23 го направиха да е истинско auto_increment, мисля че по ANSI SQL 92 е дефинирано точно така
винаги да ти дава нов номер без да се интересува дали си изтрил последния.
...
| |
|
Подобно нещо се получава и в Interbase с генераторите - всеки път ти дава нова стойност. Целта е да могат да се генерират ключове, които са уникални за всички транзакции. Предварително не се знае, коя транзакция ще завърши първа, така че поредност на стойностите не е възможна.
| |
Тема
|
Re: Защо става така?
[re: hrisunko]
|
|
Автор |
curly (Well known :P) |
Публикувано | 03.09.01 16:00 |
|
Hm, ami auto_increment e UNIQUE, zatfa stafa taka. Ako pak ti dade star nomer - fe4e ne e uniq :)
oshte pofe4e:
table1:
ID auto_inc
Name .....
table2:
linkID ID-to ot table1
Money :)
Ako delnesh ID=3 ot table1, i ostafish recorda f table2, poznai ko sha stane ako otnofo assignesh ID=3 :) 
rgdz
curly
| |
Тема
|
Re: Защо става така?
[re: curly]
|
|
Автор |
hrisunko (Наблюдател) |
Публикувано | 06.09.01 19:58 |
|
Не се бях замислил за подобен проблем. Даже го осъзнах като се замислих по задълбочено върху въпроса. Мисля, че създателите значт какво вършат, така че, по-дпбре да им се доверя. :)
Знам, че най-важното е да се поставя базата данни, която е създадена, в най-различни ситуации и да се проследи как ще реагира в дадена ситуация преди да се използва в интернет. Но отначало всичко изглежда толкова добре... :(
| |
|
|
|
|