Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Автоинкремент и значение по умолчанию / 25 сообщений из 26, страница 1 из 2
17.04.2005, 14:32
    #33019915
ALex_hha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
Пытаюсь поставить mod для phpBB2 там есть такой фрагмент кода
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TABLE phpbb_flags (
   flag_id int( 10 ) NOT NULL DEFAULT  0  auto_increment,
   flag_name varchar( 25 ),
   flag_image varchar( 25 ),
   PRIMARY KEY (flag_id)
);
Когда пытаюсь выполнить этот фрагмент получаю след. ошибку
Код: plaintext
1.
Invalid default value for 'phpbb_flags'
В чем ошибка?
...
Рейтинг: 0 / 0
17.04.2005, 14:33
    #33019916
ALex_hha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
Извиняюсь очепятался
Код: plaintext
1.
Invalid default value for 'flag_id'
...
Рейтинг: 0 / 0
17.04.2005, 14:52
    #33019924
©Felix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
ну по идее

Код: plaintext
flag_id int( 10 ) NOT NULL DEFAULT  0  auto_increment

говорит о том что

flag_id - тип инт(10), НЕ НОЛЬ, по умолчанию НОЛЬ, автоинкримент.....

как то не очень логично....

_______________
Felix
...
Рейтинг: 0 / 0
17.04.2005, 14:55
    #33019928
©Felix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
вот так правильнее...
Код: plaintext
1.
2.
3.
4.
5.
CREATE TABLE phpbb_flags (
   flag_id int( 10 ) NOT NULL auto_increment,
   flag_name varchar( 25 ),
   flag_image varchar( 25 ),
   PRIMARY KEY (flag_id)
);
он же тебе и говорит что не правильное значение по умолчанию..... скорее даже не допустимое.....
автоинкремент не может быть по умолчанию 0




_______________
Felix
...
Рейтинг: 0 / 0
17.04.2005, 14:56
    #33019929
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
©Felix
flag_id - тип инт(10), НЕ НОЛЬ, по умолчанию НОЛЬ, автоинкримент.....
как то не очень логично....


Существует большая разница между NULL и 0. Null - это отсутствие любого значения вообще. 0 - это просто цифра.
...
Рейтинг: 0 / 0
17.04.2005, 15:49
    #33019941
ALex_hha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
автор
Существует большая разница между NULL и 0. Null - это отсутствие любого значения вообще. 0 - это просто цифра

Полностью согласен. А если быть еще точнее NULL - неопределенность. Так почему он не хочет принимать значение 0?

Такой фрагмент срабатывает нормально
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TABLE phpbb_flags (
   flag_id int( 10 ) NOT NULL auto_increment,
   flag_name varchar( 25 ),
   flag_image varchar( 25 ),
   PRIMARY KEY (flag_id)
);
Но тогда при вставке записи без указания flag_id как раз и получится неопределенность. Не знаю как в Mysql а в с++ такая конструкция не сработает
Код: plaintext
1.
2.
int i;
i++;
Точнее сработает но результатом будет фиг знает что. А вот если так
Код: plaintext
1.
2.
int i= 0 ;
i++;
То результат как и ожидалось 1. В с# эту проблему уже решили.
...
Рейтинг: 0 / 0
17.04.2005, 15:55
    #33019942
vfabr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
попробуй сделать не 0 а 1 (или любое другое число) и скажи что получится
...
Рейтинг: 0 / 0
17.04.2005, 16:03
    #33019944
ALex_hha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
Результат тот же :(. Кстати у меня Mysql-4.1.9
...
Рейтинг: 0 / 0
17.04.2005, 16:08
    #33019945
vfabr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
странно почему и сейчас не понял

смотри у тебя стоит PRIMARY KEY (flag_id) это значит что значение flag_id уникально и не null следовательно когда ты ставишь значение по умолчанию то по идее при инсерте в котором не упоминается это поле в него нужно записать DEFAULT а поскольку оно уникальное то записать его будет нельзя потому что велика вероятность что оно повторится

насколько я представляю все именно так должно работать
...
Рейтинг: 0 / 0
17.04.2005, 16:13
    #33019946
vfabr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
Код: plaintext
1.
int i;
i++;

зря это в с# исправили

это правильно потому как у тебя в памяти может лежать любой мусор а ты туда инкрементировать еще что -то хочешь

те он за тебя вписывает туда 0 а если тебе надо другое значение а ты забыл инициализировать переменную ... вообщем очень может не хорошо выйти хрен потом такой баг отловишь
...
Рейтинг: 0 / 0
17.04.2005, 16:17
    #33019947
ALex_hha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
автор
вообщем очень может не хорошо выйти хрен потом такой баг отловишь

Так это новая фича M$ :) они хотят облегчить жизнь всем.

Тогда я что-то не пойму, а как тогда работает автоинкремент?
...
Рейтинг: 0 / 0
17.04.2005, 16:20
    #33019948
vfabr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
первое значение 1 потом сквозной инкремент на 1 деже если ты удалил запись (последнюю) с номером 134 (предыдущая получается 133) и сделаешь инсерт то добавится значение 135 и тд это ключ по которому можно добраться до любой записи тк он не должен повторяться
...
Рейтинг: 0 / 0
18.04.2005, 12:49
    #33020839
©Felix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
2Хрен

понимаю.... я так и думал, просто написал буквами вот и не понятки....
====

еще раз повторюсь, насколько знаю то у автоинкремента НЕ может быть значения дефолт.... потому хоть 0 хоть 1 хоть 235 туда пиши толку не будет.....

поетому дефолт автоинкременту писать нельзя......

грубо но для кажной вставки он сам дефолт считает :)
_______________
Felix
...
Рейтинг: 0 / 0
18.04.2005, 14:03
    #33021092
ALex_hha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
Ну хорошо я вставляю новую запись
insert into phpbb_flags (flag_name, flag_image) values ('Ukraine', 'Ukraine.jpg')
);
Так какое значение будет у flag_id?
...
Рейтинг: 0 / 0
18.04.2005, 14:30
    #33021177
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
следующее значение. Чаще всего на 1 большее чем максимальное значение flag_id в твоей таблице
...
Рейтинг: 0 / 0
18.04.2005, 18:26
    #33021859
ALex_hha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
А если это первая запись?
...
Рейтинг: 0 / 0
18.04.2005, 19:32
    #33021992
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
1
...
Рейтинг: 0 / 0
19.04.2005, 14:09
    #33023158
ALex_hha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
Понятно. Тогда странно что ж буржуи за бугром этого не знали?
...
Рейтинг: 0 / 0
20.04.2005, 13:54
    #33025281
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
собственно, буржуи за бугром это придумали и прописали в спецификации.

------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно ц
...
Рейтинг: 0 / 0
21.04.2005, 10:11
    #33026900
ALex_hha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
автор
собственно, буржуи за бугром это придумали и прописали в спецификации.

Тогда почему не работает?
...
Рейтинг: 0 / 0
21.04.2005, 12:54
    #33027474
©Felix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
что не работает????
_______________
Felix
...
Рейтинг: 0 / 0
21.04.2005, 14:32
    #33027816
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
ALex_hha, не е%и мозг, тебе же сказали убрать дефолт. или ты тот же taj, только под другим ником зашёл?
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно ц
...
Рейтинг: 0 / 0
13.05.2005, 08:50
    #33061218
KrK
KrK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
А как сделать так, чтобы после удаления записи, значения автоинкрементного поля автоматически пересчитывались? Чтобы не было такого: сначала идет 5-я запись, а за ней сразу 7-я.
...
Рейтинг: 0 / 0
13.05.2005, 09:45
    #33061343
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
KrKА как сделать так, чтобы после удаления записи, значения автоинкрементного поля автоматически пересчитывались? Чтобы не было такого: сначала идет 5-я запись, а за ней сразу 7-я.
А в чем собственно проблема? :)

Для вас, как для программера, значения не имеет какие номера ID "проставлены" для записей. Главное, что это номер, "однозначно идентифицирующий запись", и все.
...
Рейтинг: 0 / 0
13.05.2005, 15:35
    #33062711
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоинкремент и значение по умолчанию
автоинкремент можно и лапками делать, если не влом.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно ц
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Автоинкремент и значение по умолчанию / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]