Пользователь
Логин:
Пароль:
Забыли свой пароль?

Поиск по сайту
 

 Расширенный поиск
Реклама

 

Опрос


Погода

Регистрация почты

Форумы
Обновления
Поиск
Пользователи 
Правила
Помощь
Войти

Страницы: 1 2 След.
Регистрация почты, Разрешаем регистрацию заявок со всех емеилов
Есть задумка сделать так, что бы почта работала по следующему принципу.
1. Если письмо отправляет сотрудник внутри организации , то почта регится от него и в поле заявитель прописывается данный пользователь.
2. Если письмо отправить из вне, то заявитель либо прописывается другой , или какой ни будь левый, а в поле информация прописывался его email.
Смысл в том что бы регистрировать всю почту с сохранением внутренней структуры.

Решение:

Тем самым мы разрешаем регистрацию заявок со всех емеилов. В поле Информация будет указан email обратившегося.
Далее, чтобы автоматически подставлялся Заявитель при поступлении заявки от сотрудника, нужно на базу накатить следующий триггер.

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

CREATE TRIGGER [GetMail]
ON [dbo].[ITSM_SER_INFORMATION]
AFTER INSERT
AS
BEGIN
declare @sMail varchar(1024)
declare @CALLER_ID decimal(18,0)
declare @ORG_ID decimal(18,0)
declare @CALLER_ORG_ID decimal(18,0)
DECLARE @errno int /* Номер ошибки */

IF ( (select ins.SEI_INFORMATION from inserted ins) like '%<%>%'

AND
(select SER_CALLER_PER from inserted ins, dbo.ITSM_SERVICECALLS
where ins.SEI_SER_OID=dbo.ITSM_SERVICECALLS.SER_OID) is Null)
BEGIN
IF EXISTS (SELECT isnull ((SUBSTRING(ins.SEI_INFORMATION, PATINDEX('%<%' , ins.SEI_INFORMATION)+1 , PATINDEX('%>%' , ins.SEI_INFORMATION) - PATINDEX('%<%' , ins.SEI_INFORMATION) -1)), '')

FROM inserted ins)
BEGIN
SELECT @sMail =(SUBSTRING(ins.SEI_INFORMATION, PATINDEX('%<%' , ins.SEI_INFORMATION)+1 , PATINDEX('%>%' , ins.SEI_INFORMATION) - PATINDEX('%<%' , ins.SEI_INFORMATION) -1))
FROM inserted ins
if @sMail <> '' begin

IF @sMail like '%@%%.%'
begin

update dbo.ITSM_SER_CUSTOM_FIELDS
set SCF_SCTEXT11 = @sMail
from inserted ins
where ins.SEI_SER_OID = SCF_SER_OID
select @CALLER_ID= PER_OID from ITSM_PERSONS
where ITSM_PERSONS.PER_EMAIL=@sMail
select @CALLER_ORG_ID=PER_ORG_OID from ITSM_PERSONS
where ITSM_PERSONS.PER_EMAIL=@sMail
update dbo.ITSM_SERVICECALLS
set SER_CALLER_PER=@CALLER_ID
from inserted ins
where ins.SEI_SER_OID=dbo.ITSM_SERVICECALLS.SER_OID
select @ORG_ID=ORG_OID from dbo.ITSM_ORGANIZATIONS
where ITSM_ORGANIZATIONS.ORG_OID=@CALLER_ORG_ID
update dbo.ITSM_SERVICECALLS
set SER_CALLER_ORG=@ORG_ID
from inserted ins
where ins.SEI_SER_OID=dbo.ITSM_SERVICECALLS.SER_OID

end
end
end
END
END
Доброго времени всем, вопрос по теме, это триггер для sql сервера, а на oracle кто-нибудь подобное осуществлял?
Шаблон же есть…
Правда для Орокла немного другое написание будет… а что мешает переписать?
smile:)
2 Гр. сам спросил - сам ответил. smile:)
smile:) в оракле нет inserted и deleted на которых построен этот триггер, их реализация возможна но не так тривиальна.. переписать не вопрос, просто может у кого уже написан..)
для Оракла надо использовать NEW, OLD. вот справочка, должна помочь http://khpi-iip.mipk.kharkiv.edu/libr.../app7.html
Григорий, а какое поле у тебя под custom fields sc.text11??
подозреваю что информация, а поле sei_information из itsm_ser_information? почему не туда?
Изменено: Юрий Поповцев - 08.07.2011 16:25:27
string 255
В чем конкретней вопрос? Триггер рабочий на все 100%
да нет:) я не про работоспособность, даже не сомневаюсь, я про то как это поле называется в интерфейсе спрашиваю))
у меня в конфигурации оно вообще не задействовано, как впрочем может отказаться для чего угодно, хоть для размера ботинок пользователя, а я туда буду емэйл вставлять..) просто логику пытаюсь проследить)
Изменено: Юрий Поповцев - 08.07.2011 16:31:57
Страницы: 1 2 След.
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)

Сегодня были (гостей: 42, пользователей: 0, из них скрытых: 0)