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

Откуда: PTZ -> SPb
Сообщений: 346
Нужен триггер, который при добавлении в одну таблицу, добавляет запись в другую,например Т1 поля: iddoc (char), cust(char), ...
T2:iddoc1(char),cust1(char)..
Необходимо при добавлении записи в T1 добавить в Т2 : iddoc1 (=T1.iddoc), cust1(=substring(T1.cust,1,10)
подскажите пож-та
19 май 06, 13:09    [2683857]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Sv_Kel
Member

Откуда: PTZ -> SPb
Сообщений: 346
up
19 май 06, 13:18    [2683904]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

....
insert into T2
  (iddoc1, cust1)
select
  iddoc, substring(cust, 1, 10)
from inserted
....



Posted via ActualForum NNTP Server 1.3

19 май 06, 13:21    [2683929]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Sv_Kel
Member

Откуда: PTZ -> SPb
Сообщений: 346
daw

....
insert into T2
  (iddoc1, cust1)
select
  iddoc, substring(cust, 1, 10)
from inserted
....



Posted via ActualForum NNTP Server 1.3

А можно полный текст, там ведь надо обьявления делать, или я ошибаюсь?
19 май 06, 13:23    [2683943]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Glory
Member

Откуда:
Сообщений: 104751
Sv_Kel
up

Ну вы хоть с синтаксисом создания триггера ознакомились ?
Попробовали создать его ? Получили ошибку ?
Или просто запостили сюда "мол мне надо, давайте составляйте мне триггер" ?
19 май 06, 13:25    [2683955]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> А можно полный текст, там ведь надо обьявления делать, или я ошибаюсь?
чтой-то всем сегодня полные тексты триггеров подавай...
одну лабу, чтоли делаете?

пример создания триггера можно в BOL посмотреть:
CREATE TRIGGER - Examples - A.


Posted via ActualForum NNTP Server 1.3

19 май 06, 13:28    [2683984]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Sv_Kel
Member

Откуда: PTZ -> SPb
Сообщений: 346
Glory
Sv_Kel
up

Ну вы хоть с синтаксисом создания триггера ознакомились ?
Попробовали создать его ? Получили ошибку ?
Или просто запостили сюда "мол мне надо, давайте составляйте мне триггер" ?


Триггер писала, но выдает ошибку и пробовала по всякому, но каждый раз ругается, поэтому хочу понять в чем проблема, посмотрев пример
19 май 06, 13:29    [2683992]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
Sv_Kel
Триггер писала, но выдает ошибку и пробовала по всякому, но каждый раз ругается, поэтому хочу понять в чем проблема, посмотрев пример

Вы рекомендации по оформлению тем читали?
Где Ваш вариант скрипта, где полный текст ошибки?
Где скрипт на создание тестового окружения?
19 май 06, 13:30    [2684005]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Bumbulitis
Member

Откуда:
Сообщений: 704
А почему триггер? Может сразу из хранимки в обе таблички вставлять записи?
Если все же триггер, то табличка inserted - это то, что добавляется(обновляется), табличка deleted - то, что удаляется. А так триггер - та же хранимка. Так что ничего сложного в написании нет.
19 май 06, 13:32    [2684018]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Glory
Member

Откуда:
Сообщений: 104751
Sv_Kel
Glory
Sv_Kel
up

Ну вы хоть с синтаксисом создания триггера ознакомились ?
Попробовали создать его ? Получили ошибку ?
Или просто запостили сюда "мол мне надо, давайте составляйте мне триггер" ?


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

Примеры создания триггеров есть в хелпе - в BOL
19 май 06, 13:36    [2684050]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Bumbulitis
Member

Откуда:
Сообщений: 704
И это...я, конечно, не против триггеров, но придерживаюсь мнения: что можно сделать другим способом, не используя триггер, то так и нужно делать.
А пример daw написал выше, практически полный текст, кроме CREATE TRIGGER :)
19 май 06, 14:04    [2684252]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Sv_Kel
Member

Откуда: PTZ -> SPb
Сообщений: 346
Bumbulitis
И это...я, конечно, не против триггеров, но придерживаюсь мнения: что можно сделать другим способом, не используя триггер, то так и нужно делать.
А пример daw написал выше, практически полный текст, кроме CREATE TRIGGER :)

А если не триггер, то что? Хранимую процедуру? Так по сути получиться одно и тоже.
Вот текст моего неработающего
IF @@ROWCOUNT=1
--в таблицу выписка добавляется запись
--о платеже
BEGIN
IF not EXISTS ( SELECT *
FROM svjaz c, inserted i
WHERE c.id=i.iddoc and c.id_customer=substring(i.sp231,11,2) )
INSERT INTO svjaz(id,id_customer) select iddoc, substring(sp231,11,2)
from inserted where substring(sp231,1,10)='B1 3P '
ELSE
ROLLBACK TRAN
end
19 май 06, 14:10    [2684316]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

и что у Вас не работает? сообщение об ошибке какое-то есть?


Posted via ActualForum NNTP Server 1.3

19 май 06, 14:14    [2684339]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Bumbulitis
Member

Откуда:
Сообщений: 704
Это 1С или свое приложение? И в самом деле каково сообщение об ошибке?
19 май 06, 14:20    [2684401]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Sv_Kel
Member

Откуда: PTZ -> SPb
Сообщений: 346
При попытке добавить запись в документ выписка (из 1С) появляется:
Подключение занято до получения результатов для другого hstmt
А потом вторая ошибка "Невосстановимая ошибка базы данных". Может вообще нельзя триггер в таком случае писать?
19 май 06, 14:23    [2684421]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Bumbulitis
Member

Откуда:
Сообщений: 704
Мда в 1С не спец. Ну если 1С, то только триггер и поможет, это как раз тот случай)) Попробуйте для начала что-нибудь простенькое написать, без транзакций и блокировок, если получится, то значит можно. А эти записи обязательно в режиме реального времени добавлять?
19 май 06, 14:30    [2684480]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

первой строкой в триггере поставьте
SET NOCOUNT ON


Posted via ActualForum NNTP Server 1.3

19 май 06, 14:32    [2684502]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Sv_Kel
Member

Откуда: PTZ -> SPb
Сообщений: 346
Bumbulitis
А эти записи обязательно в режиме реального времени добавлять?

В принципе можно написать какой-либо скрипт, при запуске которого, происходит перезапись второй таблицы в соответствии с данными первой. Но я такую вещь даже не представляю как сделать. С такими скриптами никогда не работала.
19 май 06, 14:34    [2684520]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Sv_Kel
Member

Откуда: PTZ -> SPb
Сообщений: 346
daw

первой строкой в триггере поставьте
SET NOCOUNT ON


Posted via ActualForum NNTP Server 1.3


Теперь сам документ выписка добавляется, а во вторую таблицу нет.((
19 май 06, 14:41    [2684584]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Bumbulitis
Member

Откуда:
Сообщений: 704
В какую не добавляется? В 1С-вскую или в вашу?
вот это условие IF @@ROWCOUNT=1 в триггере на мой взгляд лишнее.

Если это не нужно делать в режиме реального времени, то можно написать процедурку, потом сделать job, и, например, ночью пусть отрабатывает и сливает нужные записи в вашу табличку.
19 май 06, 14:51    [2684677]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Теперь сам документ выписка добавляется, а во вторую таблицу нет.((
а как Вы это проверяете?
а записи точно по одной вставляются?
> IF @@ROWCOUNT=1
а условию они удовлетворяют?
> where substring(sp231,1,10)='B1 3P '


Posted via ActualForum NNTP Server 1.3

19 май 06, 14:51    [2684679]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Sv_Kel
Member

Откуда: PTZ -> SPb
Сообщений: 346
[quot Bumbulitis]В какую не добавляется? В 1С-вскую или в вашу?
вот это условие IF @@ROWCOUNT=1 в триггере на мой взгляд лишнее.
quot]
В 1С-вскую добавляется. А условие просто проверяет что добавляется запись.
19 май 06, 14:56    [2684716]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Sv_Kel
Member

Откуда: PTZ -> SPb
Сообщений: 346
daw

> Теперь сам документ выписка добавляется, а во вторую таблицу нет.((
а как Вы это проверяете?
а записи точно по одной вставляются?
> IF @@ROWCOUNT=1
а условию они удовлетворяют?
> where substring(sp231,1,10)='B1 3P '


Posted via ActualForum NNTP Server 1.3

Проверяю в EMS, сразу. Я уже условие убирала, все равно не вставляется.
19 май 06, 14:58    [2684729]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Bumbulitis
Member

Откуда:
Сообщений: 704
Так триггер и не сработает, если запись не будет добавляться. Так что это лишнее.
19 май 06, 14:59    [2684744]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать триггер  [new]
Sv_Kel
Member

Откуда: PTZ -> SPb
Сообщений: 346
ВСЁ!!!!!!Всем боооольшое спасибо.Убрала условие
IF @@ROWCOUNT=1 и все заработало. Значит я его не так понимала, надо будет хорошенько разобраться. Еще раз благодарю.
19 май 06, 15:02    [2684774]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить