|
|
|
Создание ограничений
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Создаю базу данных Поликлиника для курсовика. Подскажите как задать ограничение на дату рождения для mssql 2005. Я пробую в программе PowerDesigner в Business Rule Properties / Expression вот так (getdate()-data_rojdenija)>=16,not null data_rojdenija - название столбца в таблице описания пациента но при выполнении скрипта в mssql 2005 для создания базы он выдает ошибку на строчку constrait CKC_DATA_ROJD_PACIENT check ((getdate()-data_rojdenija)>=16,not null) Сообщение 128,уровень15,состояние 1,процедура CK_BIRTH_DAY,строка 3 имя "data_rojdenija" не разрешено в данном контексте.Допустимыми выражениями являются константы,константные выражения и (в некоторых контекстах)переменные.Имена столбцов не разрешены. Т.е. понятно,что моя ошибка в использовании имени столбца data_rojdenija. Как записать правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2008, 14:03:00 |
|
||
|
Создание ограничений
|
|||
|---|---|---|---|
|
#18+
Коллега, а какой формат Вы выбрали для колоночки? Дату? Или всёжтки Вы не поленились и денормализовали дату рождения в "ВОЗРАСТ"? Если такое случилось то пожалуй следующий скрипт Вам поможет: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2008, 16:56:31 |
|
||
|
Создание ограничений
|
|||
|---|---|---|---|
|
#18+
Почему я бы порекомендовал Вам именно такое решение - Тип данных datetime очень не прост в исполнении. То что предложили Вы в вашем примере работать по идее не будет ввиду отсутствия выделенного ГОДА: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2008, 17:08:57 |
|
||
|
Создание ограничений
|
|||
|---|---|---|---|
|
#18+
Такие вещи в базу данных нельзя класть,потому как как только поменяются данные ограничения,придется менять объект БД,посыпятся инвалидные объекты и всё такое. данную проверку надо делать либо на тригере, либо в ХП, а сами ограничения хранить в таблице БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2008, 17:56:26 |
|
||
|
Создание ограничений
|
|||
|---|---|---|---|
|
#18+
В Этих случаях мы используем калькулируемые (вычисляемые) аттрибуты. И применение их поддерживается большинством производителей баз. Поэтому совсем необязательно иметь структуру компилируемых объектов для поддержания динамики изменения величин. Хотя и такое решение имеет свои преимущества. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2008, 18:12:09 |
|
||
|
Создание ограничений
|
|||
|---|---|---|---|
|
#18+
Спасибо ,попробую как Вы написали. Хотя я еще такого не проходил))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2008, 19:49:05 |
|
||
|
Создание ограничений
|
|||
|---|---|---|---|
|
#18+
To MrMarmelad - не понял не слова.объясните,если не трудно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2008, 12:55:54 |
|
||
|
Создание ограничений
|
|||
|---|---|---|---|
|
#18+
ShtockTo MrMarmelad - не понял не слова.объясните,если не трудно. Каков был вопрос - таков ответ. :) На самом деле если обращаться к Вашему посту, Коллега, [Такие вещи в базу данных нельзя класть] - я попытался высказать свой аргумент - [В базу данных можно класть всё] надо конечно уделять особенное внимание на большое количество "побочных" эффектов. например калькулируемые поля имеют тенденцию [в большинстве случаев] снижать производительность и оказывать негативный эффект на INSERT и UPDATE операции. Согласившись с Вами я указал что компилируемые объекты (триггеры и хранимки) частично устраняют этот негативный эффект. Недостатком их является наличие дополнительных (избыточных) объектов в базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2008, 16:32:57 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35739783&tid=1543500]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
202ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 531ms |

| 0 / 0 |
