Форум: "Базы";
Текущий архив: 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.034 c