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

Откуда:
Сообщений: 73
Задача такая, создать таблицу, в которой есть кроме всего остального такие две колонки:
Имя колонкиТип данныхОписание
SalaryNUMERIC(6.2)Ставка (положительное значение)
RiseNUMERIC(6.2)Надбавка (ставка и надбавка в сумме дают зарплату которая не больше 4000. При этом удвоенная надбавка не должна превышать ставку)

Ну собственно в самом запросе пишу:
...
Salary NUMERIC(6, 2) CONSTRAINT tch_chk1 CHECK (Salary > 0),
Rise NUMERIC(6, 2) NOT NULL,
....

И применяя правило:
create rule nadbavka
as
@Rise*2 < @Salary and Rise < 4000
go
exec sp_bindrule 'nadbavka', 'dbo.TEACHER.Rise'
go

Но прикол в том, что тут нельзя использовать соседние записи, а как же быть?
15 окт 12, 19:05    [13322472]     Ответить | Цитировать Сообщить модератору
 Re: Создание правил для совеместных записей  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
titans,

прежде всего отказывайтесь от RULE.
Это устаревшая конструкция, в ближайших версиях её просто не будет.
В CHECK CONSTRAINT можно использовать UDF.
Проверки можно устраивать в триггере.
15 окт 12, 19:57    [13322645]     Ответить | Цитировать Сообщить модератору
 Re: Создание правил для совеместных записей  [new]
qwerty112
Guest
titans,

create table TEACHER (
...
Salary NUMERIC(6, 2) CONSTRAINT tch_chk1 CHECK (Salary > 0),
Rise NUMERIC(6, 2) NOT NULL,
...
 CONSTRAINT tch_chk2 CHECK (Rise + Salary <=4000 and 2*Rise <=Salary)
)
15 окт 12, 20:02    [13322660]     Ответить | Цитировать Сообщить модератору
 Re: Создание правил для совеместных записей  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
iap
В CHECK CONSTRAINT можно использовать UDF.
Проверки можно устраивать в триггере.
Нафига это в данном случае?
В CHECK CONSTRAINT можно ставить условия по любым/всем колонкам одновременно.
15 окт 12, 20:03    [13322667]     Ответить | Цитировать Сообщить модератору
 Re: Создание правил для совеместных записей  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Mnior
iap
В CHECK CONSTRAINT можно использовать UDF.
Проверки можно устраивать в триггере.
Нафига это в данном случае?
В CHECK CONSTRAINT можно ставить условия по любым/всем колонкам одновременно.
Там что-то про соседние записи было
15 окт 12, 20:13    [13322699]     Ответить | Цитировать Сообщить модератору
 Re: Создание правил для совеместных записей  [new]
titans
Member

Откуда:
Сообщений: 73
qwerty112
titans,

create table TEACHER (
...
Salary NUMERIC(6, 2) CONSTRAINT tch_chk1 CHECK (Salary > 0),
Rise NUMERIC(6, 2) NOT NULL,
...
 CONSTRAINT tch_chk2 CHECK (Rise + Salary <=4000 and 2*Rise <=Salary)
)

О спасибо! То что нужно!
15 окт 12, 20:16    [13322709]     Ответить | Цитировать Сообщить модератору
 Re: Создание правил для совеместных записей  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
titans
qwerty112
titans,

create table TEACHER (
...
Salary NUMERIC(6, 2) CONSTRAINT tch_chk1 CHECK (Salary > 0),
Rise NUMERIC(6, 2) NOT NULL,
...
 CONSTRAINT tch_chk2 CHECK (Rise + Salary <=4000 and 2*Rise <=Salary)
)

О спасибо! То что нужно!
А при чём тут "нельзя использовать соседние записи, а как же быть?"?
15 окт 12, 21:26    [13322899]     Ответить | Цитировать Сообщить модератору
 Re: Создание правил для совеместных записей  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Видимо для него что колонка, что ячейка - "записи".
Притом "соседние".

Ну в принципе если напрячься, то строки не связаны никак, у них нет положения места друг относительно друга, а колонки как бы объеденные в кортеж - соседствуют.
15 окт 12, 21:40    [13322933]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить