Страница 2 от 2 ПърваПърва 12
Резултати от 16 до 23 от общо 23

MySql :: Стойност на autoIncrement поле

Сподели във Facebook Сподели в Twitter Изпрати на Email Сподели в LinkedIn
  1. Senior Member
    Тук е от
    Dec 2000
    Мнения
    3,218
    #16

    Re: MySql :: Стойност на autoIncrement поле

    -------------OFFTOPIC------------------------
    @Bibi
    1) Когато препълниш таблицата server-а ще ти върне грешка, че таблицата е пълна.

    2) Изтриването на ред не променя стойността на auto_increment
    Ако си имала 3 реда (id=1,2,3) и изтриеш последния ред (where id=3), следващият INSERT ще предизвика стойност "4" в autoincrement-а. Като резултат пак ще има 3 реда, но id=1,2,4

    3)Правилият синтакс е:


    Код:
    INSERT INTO `table1111111` VALUES ((SELECT max(`id`)+1 from `table22222`) , 'abc');

    Не случайно съм наблегнал на имената на таблиците.
    Select трябва да е към друга таблица, не към тази, което се променя.

    ==============================================

    Из "Правила на форума":

    чл. 3. Избягвайте да пишете извън дискусията ("извън темата" съдържание) в сериозна тема или ако пишете го маркирайте като такова с "//Извън темата" и син цвят. Допускат се до 2 (две) "Извън темата" изказвания, за да не се превръща темата в говорилня подобна на clubs.dir.bg

    чл. 6. При тенденциозно неспазване на правилата потребителя се заключва за неопределен период време.

    чл. 14. Предполага се, че имате поне елементарни познания щом сте дошли тук! Ако ги нямате, се постарайте да ги придобиете, четейки предишни теми за подобен на вашия проблем.

    чл. 18. Flood-ът т.е. систематичното пускане на безсмислени мнения с цел трупане на рейтинг се наказва с нулиране на брояча Ви.

    -------------OFFTOPIC---------------------------------

  2.  
     
  3. Senior Member Аватара на Bibi
    Тук е от
    Nov 2004
    Мнения
    2,757
    #17

    Re: MySql :: Стойност на autoIncrement поле

    Не разбирам защо се ядосваш. Честно!
    В случая въпросът ми беше по темата.
    Понеже се усъмних, че функцията MAX е достатъчно добра за целта.
    Причина:
    Ако първо насилсвено се инсъртне запис в голямо ИД, а след това втори в ID=1, оттам нататък автоматичното инсъртване, ще поражда стойности 2, 3,..., но те няма да са максималните в таблицата.

  4. Senior Member
    Тук е от
    Dec 2000
    Мнения
    3,218
    #18

    Re: MySql :: Стойност на autoIncrement поле

    ---------OFFTOPIC-------------
    Не се ядосвам. Просто не ми харесва, когато някой отговаря без да знае отговора - това може да заблуди доста хора, особено, ако отговора е поднесен по подходящ начин.

    Що се отнася лично до теб, не смятам, че си искала нарочно да заблудиш някого - мисля, че просто пишеш всичко, което ти хрумне на "прима виста", без да се замислиш. Също така съм сигурен, че на доста от въпросите, които зададе към края на темата, можеш и сама да си отговориш (напр. какво ще стане, ако се запълни таблицата). Няма лошо, но уеб-форумите не са подходящo средство за brain storming. По-скоро това може да се осъществи чрез IRC.
    --------------OFFTOPIK-----------


    Цитат Първоначално публикувано от Bibi
    Ако първо насилсвено се инсъртне запис в голямо ИД, а след това втори в ID=1, оттам нататък автоматичното инсъртване, ще поражда стойности 2, 3,..., но те няма да са максималните в таблицата.
    Не.
    Всеки нов запис е с id=max(id)+1, освен ако изрично не се зададе стойността на id.
    _____________________________
    2005-11-30, 22:45
    Допълнение в чест на Bibi
    След няколко ЛС и любопитно наблюдение от страна на Bibi: id=max(id)+1, AKO max(id) >= 0

  5. Senior Member
    Тук е от
    Nov 2002
    Мнения
    1,594
    #19

    Re: MySql :: Стойност на autoIncrement поле

    Ooops Само да кажа че вложените селекти се поддържат от 5-цата и не съм много сигурен от кои 4-ки и дали изобщо се поддържат в 4-тата версия на Mysql.

  6. Senior Member
    Тук е от
    Dec 2000
    Мнения
    3,218
    #20

    Re: MySql :: Стойност на autoIncrement поле

    Поддържат се от 4.1*

  7. Junior Member
    Тук е от
    Oct 2004
    Мнения
    24
    #21

    Re: MySql :: Стойност на autoIncrement поле

    Да не споменавам, че в темата изобщо никой не разглежда възможността за конкурентни действия и контрола в/у изпълнението им.
    Става въпрос точно за конкурентни действия на потребители на уеб сайт.

    Мисля, че ако заявката за вкарване на запис и извеждане на последния ИД са в една транзакция (което на mysql е възможно, а на oleDB), няма да има проблем.

    Решението е заявката:
    Код:
    insert into tablitza (edikvosi) values (stojnosti); select max(id) from tablitza;
    да е в една транзакция! ДА живее mysql i mssql, но oledb ne e rabota, a konkurenciqta mejdu zaqvkite e golqma, taka 4e minavam na mssql okon4atelno. Kasmet e, 4e ADO.NET poddurja kakto oledb, taka i mssql.

    Иначе много интересни мнения сте писали;]


  8.  
     
  9. Senior Member
    Тук е от
    Dec 2000
    Мнения
    3,218
    #22

    Re: MySql :: Стойност на autoIncrement поле

    Ако вкараш заявките в транзакция, би трябвало да стане - MYISAM машината поддържа тази "екстра" от версия 5 нагоре (за mysql - екстра, за нормалните БД - необходимост) . Aз не съм я пробвал, защото съвсем на скоро излезе от бета стадия. Не съм и много сигурен какво точно означава транзакция в контекста на MySQL - дали наистина притежава АЦИД свойствата или само наподобява някои от тях.
    При всички положения ползването на транзакции ще доведе до излишно натоварване на сървъра. По-добре няколко прости заявки, отклокото една сложна. Особено с допотопни БД като MySQL. Така че аз пак бих се спрял на варианта с променливите. А в интерес на истината имаш и друга опция да решиш тази задача - изрично да закючваш и отключваш таблицата, в която пишеш. Пак бих предпочел променливите за конкретния случай.

    Нейде четох, че сложността на заявките при MSSQL няма толкова голямо значение - той ги обработва "еднакво бавно" (изразът не е мой, а на човек от Oracle). ;-))

    Няма спор, че MSSQL е база данни далеч над класата на MySQL, но не е free и изисква доста повече системни ресурси. Ако е за тестове и да се учиш, няма лошо - даже имаше орязана безплатна версия, но да сложиш пиратска версия на официален сайт...хмх..проблем...

    И на края:
    Решението е заявката:

    Код:

    insert into tablitza (edikvosi) values (stojnosti); select max(id) from tablitza;

    да е в една транзакция!
    Tова, което си написал ***НЕ *** е транзакция, нито е
    "заявката", а са две последователни заявки. Транзакция се обявява изрично със съотвтните декларации за начало и край:

    start transaction;

    insert into tablitza (edikvosi) values (stojnosti);
    select max(id) from tablitza;
    commit;




  10. Senior Member
    Тук е от
    Jul 2002
    Мнения
    2,793
    #23

    Re: MySql :: Стойност на autoIncrement поле

    Само да допълня, че и по-старите версии на MySQL поддържат transactions - например ако използваш InnoDB таблици вместо MyISAM. Иначе @Ghost е прав, че това, което си написал, си е само последователност от две заявки, ако не го оградиш в "start transaction; ... commit;"

Сподели във Facebook Сподели в Google Plus Сподели в Twitter Изпрати на Email Сподели в LinkedIn
Страница 2 от 2 ПърваПърва 12

Подобни теми

  1. Вредното електромагнитно поле....
    От hristoslav2 във форум Смартфони, телефони
    Отговори: 0
    Последно: 28-07-11, 19:54
  2. Отговори: 2
    Последно: 31-08-08, 00:01
  3. Картинка в адресното поле
    От Sitron във форум Уебдизайн и 3D
    Отговори: 15
    Последно: 30-09-06, 13:34
  4. HTML help popup при маркиране на поле
    От spritable във форум Програмиране
    Отговори: 6
    Последно: 04-07-06, 09:49
  5. Анкета Минно Поле
    От DoHKuXoT във форум Анкети
    Отговори: 20
    Последно: 31-05-04, 13:41

SetCombG.com
SetCombG.com е портален сайт и Форум за битова техника, телевизори, климатици, лаптопи и смартфони, създаден през 1999 година.
Заедно сме над 20 години!
Следвай ни
Горе