Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Вниз

Константы в MSSQL   Найти похожие ветки 

 
Гаврила ©   (2004-10-01 10:47) [0]

В некой таблице MSSQL 2000 есть поле
в котором по логике системы все значения должны находиться в диапазоне 1..5

Вопрос - как правильно обеспчить невозможность записи неверного значения?
тип поля  - TinyInt

сейчас сделано так - добавление и модификация записей через хранимые процедуры (их несколько), где на входе проверяется корректность значения, и в случае неудачи поднимается исключение.
Но - таких процедур - несколько, и везде эти "константы" - 1 и 5  определены просто числами.
Нельзя ли объявить именно константами где-то в одном месте, и везде использовать? Везде - в смысле в разных процедурах.
Так как диапазон может и изменится ,и хотелось бы поменять константы в одном месте, а не лазить по всем процедурам

Приходит в голову создать пару функций, где и возвращать их результаатом.
А как такие вещи делаются правильно ?


 
stone ©   (2004-10-01 10:53) [1]

User Define Data Type + Rule


 
Ega23 ©   (2004-10-01 10:55) [2]

Нельзя ли объявить именно константами где-то в одном месте, и везде использовать? Везде - в смысле в разных процедурах.
Так как диапазон может и изменится ,и хотелось бы поменять константы в одном месте, а не лазить по всем процедурам


Я обычно завожу таблицу xConfig :
create table xConfig
(
   CfgNam         char(16)              not null
       default " ",
   WORKCOD        smallint              not null
       default 0,
   MODCOD         tinyint               not null
       default 0,
   opercod        int                   not null
       default 0,
   CfgNum1        int                   not null
       default 0,
   CfgNum2        int                   not null
       default 0,
   cfgStr1        varchar(4096)         not null
       default " ",
   cfgStr2        varchar(4000)         not null
       default " ",
   datin          datetime              not null
       default "1900",
   datout         datetime              not null
       default "1900",
   cfgtxt         text                  null    ,
   cfgImg         image                 null    
)


В ней по CfgNam всегда можно какие-то константы хранить.


 
Гаврила ©   (2004-10-01 11:00) [3]


> [1] stone ©   (01.10.04 10:53)


Хоть и не так ,но спасибо :-)
Rule - для обратной совместимости, но, разбираясь, я узнал, что оказывается есть некие Check Constraint  :-)


 
BoxTer   (2004-10-01 12:26) [4]

вот оно и есть - констрейнты.
например
CREATE TABLE jobs
(
  job_id  smallint
     IDENTITY(1,1)
     PRIMARY KEY CLUSTERED,
  job_desc        varchar(50)     NOT NULL
     DEFAULT "New Position - title not formalized yet",
  min_lvl tinyint NOT NULL
     CHECK (min_lvl >= 10),
  max_lvl tinyint NOT NULL
     CHECK (max_lvl <= 250)
)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.057 c
1-1097930568
Dionnis
2004-10-16 16:42
2004.10.31
Количество дочерних элементов элементов в дереве


1-1097666698
denis24
2004-10-13 15:24
2004.10.31
закраска вкладок TabSheet


1-1097589162
White__
2004-10-12 17:52
2004.10.31
Работа с Excel


8-1091559275
DreymanD
2004-08-03 22:54
2004.10.31
Видео кодеки.


1-1098154162
rom
2004-10-19 06:49
2004.10.31
передача изображения из image в image





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский