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

Откуда:
Сообщений: 20
Помогите разобраться с триггерами. В общем есть таблица Test с столбцами ID(int), Name(text), Descryption(text). Необходимо написать триггер, который бы при добавлении записи в поле Name автоматически заполнял бы поле Descryption в этой строке. Прошу помидорами не кидаться за такой нубский вопрос) Спасибо)
18 окт 11, 10:08    [11456951]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
Glory
Member

Откуда:
Сообщений: 104751
Ильясик
Прошу помидорами не кидаться за такой нубский вопрос

И в чем ваша проблема ? Что вы попробовали и что не получилось ?
18 окт 11, 10:10    [11456961]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
Ильясик
Member

Откуда:
Сообщений: 20
Не разобрался, поэтому и прошу помочь
18 окт 11, 10:13    [11456981]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
Glory
Member

Откуда:
Сообщений: 104751
Ильясик
Не разобрался

Не разобрались в чем ?
В синтаксисе триггера из хелпа ? В примерах из хелпа ? В собственных попытках ?
18 окт 11, 10:16    [11457000]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
Ильясик
Member

Откуда:
Сообщений: 20
В синтаксисе, по примеру пробовал не получилось. Мне нужно что б вы просто написали простейший пример как это реализовать. А дальше я разберусь
18 окт 11, 10:30    [11457082]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
Glory
Member

Откуда:
Сообщений: 104751
Ильясик
В синтаксисе, по примеру пробовал не получилось.

Что не получилось то ?


Ильясик
Мне нужно что б вы просто написали простейший пример как это реализовать

Примеры из стандартного хелпа статьи CREATE TRIGGER недостаточно просты ?
18 окт 11, 10:38    [11457139]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
Ильясик
Member

Откуда:
Сообщений: 20
create trigger tr on Test
for update
as
set nocount on
update Name set Descryption = 'Random1'
from Test Name join
inserted i on Name.id = i.ID join
deleted d on Name.id = d.ID
and i.Descryption <> d.Descryption
GO
пишет Нельзя использовать столбцы text, ntext или image в таблицах "inserted" и "deleted".

я поменял text на char. Триггер выполнился, но при добавлении данных в табл ничего не происходит
18 окт 11, 10:51    [11457220]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
iljy
Member

Откуда:
Сообщений: 8711
Ильясик
я поменял text на char.

Очень напрасно, вы потеряли кучу данных. Тип text заменяется на varchar(max).

Ильясик
Триггер выполнился, но при добавлении данных в табл ничего не происходит

А что должно происходить при добавлении, если триггер на изменение?
18 окт 11, 10:57    [11457256]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31970
Ильясик
Триггер выполнился, но при добавлении данных в табл ничего не происходит
Странно.

Триггер не мог выполниться.

Почему вы так уверены, как смотрели?
18 окт 11, 10:57    [11457260]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
Ильясик
Member

Откуда:
Сообщений: 20
Ладно так тогда

create trigger tr on Test
for insert
as
set nocount on
insert Name set Descryption = 'Random1'

GO

Неправильный синтаксис около ключевого слова "set".
18 окт 11, 11:06    [11457310]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
prog13
Member

Откуда:
Сообщений: 541
Ильясик
Ладно так тогда

create trigger tr on Test
for insert
as
set nocount on
Update Name set Descryption = 'Random1'

GO
.
18 окт 11, 11:12    [11457343]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
iljy
Member

Откуда:
Сообщений: 8711
Ильясик
Ладно так тогда

create trigger tr on Test
for insert
as
set nocount on
insert Name set Descryption = 'Random1'

GO

Неправильный синтаксис около ключевого слова "set".

Ну так он действительно неправильный. Вы синтаксис insert смотрели?
18 окт 11, 11:13    [11457354]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
Ильясик
Member

Откуда:
Сообщений: 20
Просто напишите как надо уже и не морочьте голову. Я описал суть триггера, неужели так сложно написать код
18 окт 11, 11:20    [11457393]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
iljy
Member

Откуда:
Сообщений: 8711
Ильясик
Просто напишите как надо уже и не морочьте голову. Я описал суть триггера, неужели так сложно написать код

Надо вот так:
http://msdn.microsoft.com/en-us/library/ms174335.aspx
Или вот так:
https://www.sql.ru/forum/actualtopics.aspx?bid=9
18 окт 11, 11:24    [11457416]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
Ильясик
Member

Откуда:
Сообщений: 20
Ниосилил. напишите код не выпендривайтесь
18 окт 11, 11:35    [11457505]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
aleks2
Guest
Ильясик
Ниосилил. напишите код не выпендривайтесь

Специально для лиц с ограниченными возможностями по написанию триггеров есть DEFAULT VALUE для колонки в таблице.
18 окт 11, 11:40    [11457555]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Вообще-то, INSERT и UPDATE работают с таблицей, а не с полем таблицы.
18 окт 11, 11:56    [11457814]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
Ильясик
Member

Откуда:
Сообщений: 20
у что за люди я уже сто раз попросил сразу написать как надо...
18 окт 11, 11:56    [11457818]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
Glory
Member

Откуда:
Сообщений: 104751
Ильясик
у что за люди я уже сто раз попросил сразу написать как надо...

Скажи адрес. Подъедем и все сделаем за вас
А вы пока чаю-кофе попьете.
18 окт 11, 12:12    [11458001]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
Ильясик
Member

Откуда:
Сообщений: 20
Есть тут хоть один нормальный человек? Если б я разбирался в SQL я бы попросил помощи?
18 окт 11, 14:13    [11459362]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
Glory
Member

Откуда:
Сообщений: 104751
Ильясик
Есть тут хоть один нормальный человек?

Тут все нормальные. И не делают за других работу. Особенно в приказном порядке.

Ильясик
Если б я разбирался в SQL я бы попросил помощи?

"напишите код не выпендривайтесь "
"я уже сто раз попросил сразу написать как надо... "
Вы забыли добавить волшебные слова - бегом, быстро и без разговоров
Тогда сразу станет ясно, что человек в беде
18 окт 11, 14:20    [11459448]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Ильясик
В синтаксисе, по примеру пробовал не получилось. Мне нужно что б вы просто написали простейший пример как это реализовать. А дальше я разберусь

Вот вам пример, разбирайтесь дальше
create table dbo.Test (ID int, Name varchar(max), Description  varchar(max))
go
create trigger Test_on_insert on dbo.Test after insert
as
update t
set 
	t.Description = 'Random1'
from
	dbo.Test t
	join inserted i on  i.ID = t.ID
go
insert into dbo.Test(ID,Name)
select 1, 'test'
go
select * from dbo.Test
go
drop table dbo.Test
go

Вам триггер именно нужен? Цель-то какая? Если заполнить определнным значением столбец во время вставки, то лучше подойдет default, т.е. лучше просто вот так создать таблицу
create table dbo.Test (ID int, Name varchar(max), Description  varchar(max) default 'Random1')
go
insert into dbo.Test(ID,Name)
select 1, 'test'
go
select * from dbo.Test
go
drop table dbo.Test
go
18 окт 11, 14:31    [11459586]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
Ильясик
Member

Откуда:
Сообщений: 20
Спасибо большое работает. а не подскажете как повесить условие на него. Допустим если набираешь в любое из полей допустим "tr", то триггер меняет поле Descryption, а если вводишь любой другой текст то не меняет
19 окт 11, 09:02    [11463795]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31970
Ильясик
Спасибо большое работает. а не подскажете как повесить условие на него.
На кого условия?

Ильясик
Допустим если набираешь в любое из полей допустим "tr", то триггер меняет поле Descryption, а если вводишь любой другой текст то не меняет
Наверняка ошибка в коде.
19 окт 11, 11:10    [11464528]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на запись  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Ильясик
Есть тут хоть один нормальный человек? Если б я разбирался в SQL я бы попросил помощи?


1.нет
2.да
19 окт 11, 11:36    [11464748]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить