Модераторы: Akella

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> что будет когда достигнет макс. Integer? 
:(
    Опции темы
Aprol
Дата 13.8.2007, 04:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



Что произойдет когда значение поля integer достигнет максимума?
А если это первичный ключ и значение маскимально для этого типа данных, что произойдет?
PM MAIL   Вверх
chand0s
Дата 13.8.2007, 05:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 19.2.2007

Репутация: 1
Всего: 3



При попытке присвоить полю типа int значение вылезающее за диапазон сервер выплюнет ошибку:
Код

SQL Message : -802
Arithmetic overflow or division by zero has occurred.

PM MAIL   Вверх
Aprol
Дата 13.8.2007, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



И что делать то  тогда?
PM MAIL   Вверх
ksili
Дата 13.8.2007, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



А что, реально боишься, что значение ключа превысит 2^64?


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
chand0s
Дата 13.8.2007, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 19.2.2007

Репутация: 1
Всего: 3



Цитата(Aprol @ 13.8.2007,  07:35)
И что делать то  тогда?

Читать литературу.
У Вас действительно возникла такая проблема?
PM MAIL   Вверх
Aprol
Дата 14.8.2007, 03:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



Нет. Это так интересно стало. Ведь есть базы где в день появляется несколько сотен записей и удаляется столько же.
PM MAIL   Вверх
Aprol
Дата 14.8.2007, 03:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



2^64 ?? возможно я дезинформирован:
В InterBase есть следующие основные категории типов данных: символьные, целые, дробные (с плавающей точкой), время и дата.Начнем подробный разбор.

Название типа данных Размер в байтах Диапазон значений/Точность Дополнительно 
INTEGER 4 от -2147483648 до 2147483648 Целое знаковое 
SMALLINT 2 от -327678 до 32767 Целовое знаковое 
DECIMAL(precision,scale) Переменная длина. 2,4 или 8 байт Точность(precision) от 1 до 18 ( Точность - это максимальное количество цифр ). Количество(scale) цифр после десятичной точки от 1 до 18 Масштабируемое целое ( десятичное ) 
NUMERIC(precision,scale) Переменная длина. 2,4 или 8 байт Точность(precision) от 1 до 18 ( Точность - это максимальное количество цифр ). Количество(scale) цифр после десятичной точки от 1 до 18 Масштабируемое целое ( десятичное ) 
DOUBLE PRECISION 8 от 2.225x10-308 до 1.797x10308 Дробное 
FLOAT 4 от 1.175 x 10–38 до 3.402х1038 Дробное 
CHAR(n) n - символов от 1 до 32767 Строка фиксированной длины (набор символов фиксированной длины). Альтернативное название - CHARACTER. 
VARCHAR(n) n - символов от 1 до 32765 Строка переменной длины (набор символов переменной длины).Альтернативное название - CHARACTER VARYING, CHAR VARYING. 
DATE 8 От 1 Января 100 нашей эры to 29 Февраля 32768 нашей эры. Дата 
TIME 8 0:00 AM-23:59.9999 PM Время 
TIMESTAMP 8 От 1 Января 100 нашей эры to 29 Февраля 32768 нашей эры. Время и дата 
BLOB Переменная длина  Динамически расширяемый тип данных для хранения данных большого размера.Например, графики,текста,звука. 

PM MAIL   Вверх
smartov
Дата 14.8.2007, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: нет
Всего: 259



Цитата(Aprol @  13.8.2007,  08:35 Найти цитируемый пост)
И что делать то  тогда? 

Ну если у тебя количество записей в таблице перевалило за эти отведенные два с хвостиком миллиарда, и оптимизировать базу действительно некуда, то переведешь тип поля в BIGINT и возрадуешься smile

BIGINT[(M)] [UNSIGNED] [ZEROFILL]

A large integer. The signed range is -9223372036854775808 to 9223372036854775807. The unsigned range is 0 to 18446744073709551615. 

Девять секстиллионов записей осилишь (это еще если со знаком, а без знака так вообщее 18)? smile (Если ты ответил да, то база данных ответит нет smile )

Это сообщение отредактировал(а) smartov - 14.8.2007, 09:15
PM MAIL   Вверх
Aprol
Дата 15.8.2007, 06:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



Лучше сразу перевести все первичные ключи в large integer?

Добавлено через 2 минуты и 1 секунду
в ibexpert нет этого типа данных?
Ты про interbase писал?
 smile 
нужно что ли через sql изменять...

Добавлено через 5 минут и 14 секунд
Стоп а как мне тогда в приложении использовать эти числа delphi такие числа не осилит без всяких хитростей которых я не знаю :(
PM MAIL   Вверх
ksili
Дата 15.8.2007, 06:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Какой large integer?

INTEGER - 4-байтовой целое. В диалекте 1 генераторы генерируют значения типа INTEGER. Вы можете хранить эти числа в BIGINT без преобразования.

BIGINT - 8-байтовое целое. В диалекте 3 генераторами генерируются числа типа BIGINT.


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Aprol
Дата 15.8.2007, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



Цитата(ksili @ 15.8.2007,  06:39)
Какой large integer?

INTEGER - 4-байтовой целое. В диалекте 1 генераторы генерируют значения типа INTEGER. Вы можете хранить эти числа в BIGINT без преобразования.

BIGINT - 8-байтовое целое. В диалекте 3 генераторами генерируются числа типа BIGINT.

по понятнее можешь ? smile 
Генераторы то может и генерируют а вот поле тип данных то другой...
PM MAIL   Вверх
ksili
Дата 15.8.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Ты же сам говоришь "первичные ключи". А их обычно генераторы и генерят

Добавлено через 2 минуты и 52 секунды
Если вдруг когда-то тебе не хватит 2^32 (INTEGER), преобразуешь его без проблем к BIGINT  и будешь работать дальше

Цитата(Aprol @  14.8.2007,  08:16 Найти цитируемый пост)
в день появляется несколько сотен записей и удаляется столько же

Это вообще-то по сравнению с 2^32 ОЧЕНЬ мало, посчитай сам если не веришь, на сколько лет хватит integer'a


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Aprol
Дата 15.8.2007, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



Вот сейчас попробывал изменить тип данных и облом!
Так как есть внешние ключи. Получается в одной таблице один тип данных  во второй другой.
Решение убрать связь,и зменить тип и снова сделать связь?
PM MAIL   Вверх
ksili
Дата 15.8.2007, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Цитата(Aprol @  15.8.2007,  16:42 Найти цитируемый пост)
Решение убрать связь,и зменить тип и снова сделать связь?

Попробуй так и сделать. Проблема конечно из=за связей. Сам INTEGER должен преобразовываться к BIGINT без проблем

Добавлено через 5 минут и 41 секунду
Если таких связей много можно написать скрипт, в котором сначала дропаешь внешние ключи, потом преобразуешь типы нужных полей, и наконец заново создаешь ключи.

А потом 15 лет хранишь в укромном месте этот скрипт, чтобы в критический момент достать его и использовать  smile 


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Aprol
Дата 15.8.2007, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 15.6.2007

Репутация: нет
Всего: нет



понятно спасибо!
А если сразу поставить bigint, на много возрастет размер базы данных?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.