Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проверочные ограничения  [new]
G-58
Member

Откуда:
Сообщений: 7
Здравствуйте как сделать проверочное ограничение чтобы имел вид <буква><цифра><буква><буква>;
2 апр 12, 11:14    [12349507]     Ответить | Цитировать Сообщить модератору
 Re: Проверочные ограничения  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
check + like
2 апр 12, 11:17    [12349526]     Ответить | Цитировать Сообщить модератору
 Re: Проверочные ограничения  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
Правильнее - сделать в приложении, а не СКЛ.
Потому что там проще на это отреагировать.
2 апр 12, 11:17    [12349538]     Ответить | Цитировать Сообщить модератору
 Re: Проверочные ограничения  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31962
LSV
Правильнее - сделать в приложении, а не СКЛ.
Потому что там проще на это отреагировать.
Почему? Проверки как раз принято делать в СУБД, это более надёжно и покрывает так же изменения данных не со стороны клиента (импорты, массовые обновления...). А в клиенте, само собой, можно дополнительно устанавливать, например, форматы полей ввода данных...
2 апр 12, 12:21    [12350120]     Ответить | Цитировать Сообщить модератору
 Re: Проверочные ограничения  [new]
G-58
Member

Откуда:
Сообщений: 7
вот так должен выглядеть запрос CONSTRAINT prov_ogr1 CHECK (id_lec like '[A-Z]{0-9}[A-Z][A-Z]')
2 апр 12, 20:23    [12353742]     Ответить | Цитировать Сообщить модератору
 Re: Проверочные ограничения  [new]
G-58
Member

Откуда:
Сообщений: 7
при создании таблицы ошибок не возникает, но при заполнении возникает ошибка
вот создание таблицы
CREATE TABLE Apteca
         ( id_lec CHAR (4) NOT NULL ,
           CONSTRAINT id_lec CHECK ( id_lec  LIKE  '[A-Z][0-9][A-Z][A-Z]'),
           UNIQUE (id_lec),
           tip_lec CHAR (25),
           izgovitel CHAR (30),
           data_izgotov DATE,
           srok_godnosti CHAR (10),
           zadolevanie CHAR (30),
           CONSTRAINT tip_lec  CHECK (tip_lec IN ('Антибиотик','Анаболик', 'Спазмолитическое','Отхаркивающие')),
           stoimost CHAR (20),
           cena MONEY);  

Вот заполнение
insert into Apteca
(id_lec,tip_lec,izgovitel,data_izgotov,srok_godnosti,zadolevanie,stoimost,cena) 
values
('B1FС','Антибиотик','Invesa','2010/02/05','4 месяца','Бронхит',150,245),
2 апр 12, 21:49    [12354011]     Ответить | Цитировать Сообщить модератору
 Re: Проверочные ограничения  [new]
G-58
Member

Откуда:
Сообщений: 7
забыл ошибку указать
Сообщение 547, уровень 16, состояние 0, строка 1
Конфликт инструкции INSERT с ограничением CHECK "id_lec". Конфликт произошел в базе данных "Apteca", таблица "dbo.Apteca1", column 'id_lec'.
Выполнение данной инструкции было прервано.
2 апр 12, 21:50    [12354016]     Ответить | Цитировать Сообщить модератору
 Re: Проверочные ограничения  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
G-58,
Потому что B или C русские.
2 апр 12, 22:16    [12354100]     Ответить | Цитировать Сообщить модератору
 Re: Проверочные ограничения  [new]
G-58
Member

Откуда:
Сообщений: 7
Спасибо
2 апр 12, 22:39    [12354160]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить