Помогите триггер написать

ДmK

есть база, в которой внешняя программа периодически обновляет одно поле(M).требуется в зависимости от времени обновления( текущая минута), записывать данные из этого поля в другое поле этой же таблицы, название которого соотносится с текущей минутой, т.е. есть поля m1,m2...m60 и в момент времени HH:01 надо значение из М писать в m1, в HH:20 - в m20 и т.д.хочется использовать для этого триггер.начал так:
<pre class="prettyprint linenums">AS begin DECLARE @mi varchar(4) DECLARE @m varchar(4) SELECT DATENAME(minute, getdate()) AS m Set @mi='m'+@m </pre>
насчет последней строчки не уверен, получу ли я в mi имя поля типа "m20"и вот как потом это имя подставить в SET ИмяПоля = M ?просьба ногами не пинать, T-SQL только начал изучать :)
3 ответа

ДmK

есть база, в которой внешняя программа периодически обновляет одно поле(M).требуется в зависимости от времени обновления( текущая минута), записывать данные из этого поля в другое поле этой же таблицы, название которого соотносится с текущей минутой, т.е. есть поля m1,m2...m60 и в момент времени HH:01 надо значение из М писать в m1, в HH:20 - в m20 и т.д.хочется использовать для этого триггер.
Сначала измените структуру хранения данных. Перейдите от хранения в столбцах к хранению в записях. И триггер не нужен будет.


ДmK

2ДmK
<pre class="prettyprint linenums">select @m = datepart(mm, getdate()) update MyTable set m1 = case when @m = 1 then M else m1 end, m2 = case when @m = 2 then M else m2 end, m3 = case when @m = 3 then M else m3 end, ................ m60 = case when @m = 60 then M else m60 end from inserted i where MyTable.Pk = i.Pk </pre>
Но задача странная......


ДmK

Но задача странная......
спасибо, ваш код с небольшими переделками работает.да, согласен, странноватая задача, все это можно легко на клиенте сделать, который и пишет в первичное поле, но захотелось на стороне сервера :)alexeyvgмне удобнее хранить данные по периоду в одной записи и выбирать одной