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

Откуда:
Сообщений: 42
Помогите начинающему разработчику!
Есть таблица А, у нее несколько полей....возникла такая необходимость, что бы одна ячейка таблицы формировалась из суммы 2-х ячеек и вычитании из полученного - содержимого 3-й ячейки! Я полагаю что лучше всего будет повесить триггер на ячейку, и если произошло изменение в полях таблицы, из которых формируется ячейка, то необходимо пересчитать значение этого поля...
Кто нибудь может привести пример данного триггера или покажите где почитать?
Заранее благодарен!
1 ноя 05, 16:12    [2027913]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на ячейку таблицы!  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2791
Есть еще вычисляемые столбцы.
См. BOL: create table.
1 ноя 05, 16:14    [2027922]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на ячейку таблицы!  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
автор
Я полагаю что лучше всего будет повесить триггер на ячейку,

а) триггер вешается на таблицу
б) можно еще сделать computed column
1 ноя 05, 16:15    [2027924]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на ячейку таблицы!  [new]
bev84
Member

Откуда:
Сообщений: 42
Prolog я так понял это как раз то что мне надо...

CREATE TABLE mytable
(
low int,
high int,
myavg AS (low + high)/2
)

Гавриленко Сергей Алексеевич спасибо за поправку!
1 ноя 05, 16:33    [2028014]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на ячейку таблицы!  [new]
vma_mnt
Member

Откуда: Новокузнецк
Сообщений: 602
IMHO, лучше сделать триггер, типа

CREATE
TABLE mytable 
(
ID int identity primary key,
low int not null,
high int not null,
myavg int
)
go
create trigger Trigger_mytable on mytable
for insert, update 
as 
if update(low) or update(high)
begin
update mytable  set myavg = (mytable.low + mytable.high) / 2
from mytable inner join inserted on mytable.id = inserted.id
end
go
insert into mytable (low, high) select 2, 4
insert into mytable (low, high) select 4, 8
go
select * from mytable 
go
drop table mytable
go
2 ноя 05, 04:47    [2029217]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить