![]() |
|
Модераторы: Akella |
![]()
|
|
| Aprol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Что произойдет когда значение поля integer достигнет максимума?
А если это первичный ключ и значение маскимально для этого типа данных, что произойдет? |
|||
|
||||
| chand0s |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 19.2.2007 Репутация: 1 Всего: 3 |
При попытке присвоить полю типа int значение вылезающее за диапазон сервер выплюнет ошибку:
|
|||
|
||||
| Aprol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
И что делать то тогда?
|
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
А что, реально боишься, что значение ключа превысит 2^64?
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| chand0s |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 19.2.2007 Репутация: 1 Всего: 3 |
Читать литературу. У Вас действительно возникла такая проблема? |
|||
|
||||
| Aprol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Нет. Это так интересно стало. Ведь есть базы где в день появляется несколько сотен записей и удаляется столько же.
|
|||
|
||||
| Aprol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 Переменная длина Динамически расширяемый тип данных для хранения данных большого размера.Например, графики,текста,звука. |
|||
|
||||
| smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: нет Всего: 259 |
Ну если у тебя количество записей в таблице перевалило за эти отведенные два с хвостиком миллиарда, и оптимизировать базу действительно некуда, то переведешь тип поля в BIGINT и возрадуешься BIGINT[(M)] [UNSIGNED] [ZEROFILL] A large integer. The signed range is -9223372036854775808 to 9223372036854775807. The unsigned range is 0 to 18446744073709551615. Девять секстиллионов записей осилишь (это еще если со знаком, а без знака так вообщее 18)? Это сообщение отредактировал(а) smartov - 14.8.2007, 09:15 |
|||
|
||||
| Aprol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Лучше сразу перевести все первичные ключи в large integer?
Добавлено через 2 минуты и 1 секунду в ibexpert нет этого типа данных? Ты про interbase писал? нужно что ли через sql изменять... Добавлено через 5 минут и 14 секунд Стоп а как мне тогда в приложении использовать эти числа delphi такие числа не осилит без всяких хитростей которых я не знаю :( |
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Какой large integer?
INTEGER - 4-байтовой целое. В диалекте 1 генераторы генерируют значения типа INTEGER. Вы можете хранить эти числа в BIGINT без преобразования. BIGINT - 8-байтовое целое. В диалекте 3 генераторами генерируются числа типа BIGINT. -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| Aprol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
по понятнее можешь ? Генераторы то может и генерируют а вот поле тип данных то другой... |
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Ты же сам говоришь "первичные ключи". А их обычно генераторы и генерят
Добавлено через 2 минуты и 52 секунды Если вдруг когда-то тебе не хватит 2^32 (INTEGER), преобразуешь его без проблем к BIGINT и будешь работать дальше Это вообще-то по сравнению с 2^32 ОЧЕНЬ мало, посчитай сам если не веришь, на сколько лет хватит integer'a -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| Aprol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Вот сейчас попробывал изменить тип данных и облом!
Так как есть внешние ключи. Получается в одной таблице один тип данных во второй другой. Решение убрать связь,и зменить тип и снова сделать связь? |
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Попробуй так и сделать. Проблема конечно из=за связей. Сам INTEGER должен преобразовываться к BIGINT без проблем Добавлено через 5 минут и 41 секунду Если таких связей много можно написать скрипт, в котором сначала дропаешь внешние ключи, потом преобразуешь типы нужных полей, и наконец заново создаешь ключи. А потом 15 лет хранишь в укромном месте этот скрипт, чтобы в критический момент достать его и использовать -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| Aprol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
понятно спасибо!
А если сразу поставить bigint, на много возрастет размер базы данных? |
|||
|
||||
![]()
|
| Правила форума "Interbase" | |
|
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |