Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Jimmy.BV
Зарегистрирован: 05.12.2007 Сообщения: 2
|
Добавлено: Ср Дек 05 2007 18:09 Заголовок сообщения: Cоставной PK с датой |
|
|
Добрый день коллеги...
Помощь требуется небольшая...
Есть некая таблица...
Надо сделать составной PK состоящий из трёх полей:
первые два поля это INT (никаких проблем);
но третье поле является типом DATE, НО для PK мне мне из поля DATE нужен только год...
Так вот вопрос как сделать так что бы PK брал из DATE поля только год
Код: |
ALTER TABLE table_name
ADD CONSTRAINT pk_name PRIMARY KEY (col_int, col_int, ???col_date???);
|
может быть что то типа TO_INT('YYYY') ?????
Спасибо за помощь...  |
|
Вернуться к началу |
|
 |
Hastur
Зарегистрирован: 14.06.2007 Сообщения: 24
|
Добавлено: Ср Янв 16 2008 17:56 Заголовок сообщения: |
|
|
Сделай PK из первых двух полей а третье поле контролируй тригером. Или раздели поле с датой на два в одном день и месяц а в другом год(но это помоему маразм ) |
|
Вернуться к началу |
|
 |
C37
Зарегистрирован: 09.03.2005 Сообщения: 311
|
Добавлено: Ср Янв 16 2008 23:59 Заголовок сообщения: |
|
|
Тогда уж логичнее в одном поле хранить нормальную дату, как она есть, а в другое триггером заносить из нее год. Но зачем в PK совать год? Если регистрируемые события гарантированно происходят не чаще раза в год, то можно брать в ключ всю дату... |
|
Вернуться к началу |
|
 |
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Пт Апр 11 2008 09:18 Заголовок сообщения: решение есть, но зачем такое решение? |
|
|
решение задачи есть. просто ввести в таблицу вычисляемое поле (=год(поле_дата)) и использовать его в ключе
вообще говоря, я не знаю баз данных, у которых оптимизатор нормально работает с составными индексами. исключение составляют игрушечные xBase и BTrieve. но в них индекс используется не автоматически оптимизатором, а принудительно программистом
--------------------------------------------------------
всё можно сделать через известное место. но можно сначала подумать о самой задаче |
|
Вернуться к началу |
|
 |
|