Как работать с таблицей, содержащей уникальный набор значений типа double? |
Здравствуйте, гость ( Вход | Регистрация )
Как работать с таблицей, содержащей уникальный набор значений типа double? |
Steklova Olga |
11.6.2013, 10:18
Сообщение
#1
|
Участник Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4 |
Всем привет
В таблице БД FireBird надо хранить массивы значений F_FR для разных объектов (TO_F_OBJ_NMB - номер объекта). Значения содержат 1..6 цифр в целой части, 2 цифры в дробной части, значения положительные. Для конкретного объекта массив F_FR не должен содержать повторяющиеся значения. Таблица создана так
Для корректировки таблицы T_OBJ_FR использую диалог, в котором для корректировки поля F_FR использую doubleSpinBox. Мне непонятно вот что: 1) можно ли создать уникальный ключ, содержащий поле типа DOUBLE PRECISION? (например, создать уникальный ключ (TO_F_OBJ_NMB, F_FR)) 2) если не создавать уникальный ключ, то как проверить, есть ли уже в таблице только что введенное оператором в doubleSpinBox значение F_FR? (как написать SELECT?) 3) не лучше ли будет описать поле F_FR как NUMERIC(8,2), а не DOUBLE PRECISION? 4) можно ввести значение типа NUMERIC(8,2) с помощью doubleSpinBox? 5) можно создать уникальный ключ, содержащий поле типа NUMERIC? Сообщение отредактировал Steklova Olga - 13.6.2013, 9:15 |
|
|
alex977 |
11.6.2013, 17:05
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 310 Регистрация: 19.6.2008 Из: Россия, МО, г.Мытищи Пользователь №: 206 Спасибо сказали: 77 раз(а) Репутация: 8 |
F_FR DOUBLE PRECISION NOT NULL Возможно нужно добавить "UNIQUE" Цитата 3.Уникальный ключ Уникальный ключ - дополнительная возможность ограничения значений записей таблицы с целью профилактики занесения в нее двух и более записей, имеющих одинаковое значение указанного столбца (столбцов). В отличие от PRIMARY KEY количество уникальных ключей в таблице неограничено (точнее, ограничено максимальной комбинаторной суммой вариантов комбинации имен доменов, входящих в таблицу). Уникальный ключ также называется «альтернативным», и чаще всего предназначен не для однозначной идентификации столбца, как Первичный ключ, а для указания столбца, который позволяет осуществить дополнительную идентификацию строки. Например - номер паспорта, код ИНН, номер пенсионной страховки, и т.д. Указание NOT NULL для UNIQUE, начиная с Firebird 1.5, не является обязательным. При этом уникальный индекс, который будет контролировать данное ограничение UNIQUE, может содержать NULL. Такой индекс невозможно создать командой CREATE INDEX. Уникальный ключ может быть объявлен как и при описании домена: CREATE TABLE MY_TABLE( ...... FIELD1 INTEGER NOT NULL UNIQUE, ..... ); так и при описании таблицы (рекомендуемый вариант, с указанием имени constraint) CREATE TABLE MY_TABLE( .... FIELD1 INTEGER NOT NULL, FIELD2 INTEGER NOT NULL, .... CONSTRAINT UNQ_MY_TABLE_1 UNIQUE(FIELD1, FIELD2), .... ); При создании уникального ключа для версий Firebird ниже 1.5, столбец или домен должен содержать дополнительное ограничение ссылочной целостности NOT NULL. Подробнее см. CREATE DOMAIN источник: http://www.firebirdsql.su/doku.php?id=constraint |
|
|
Текстовая версия | Сейчас: 28.11.2024, 22:05 |