@Richard_Ferlow
Веб-программист

Как быть с триггером в MSSQL — видоизменить чтобы CRM не заметила?

Есть одна windows crm с базой в MSSQL 2008 и вот там в таблице клиентов телефоны вносятся без какой-либо маски, т.е. просто как человек написал, так и сохранился телефон в базе. соответственно там и доп символы и пробелы и все что угодно может быть. А нужно по номеру телефона поиск провести.

Я решил добавить к таблице поле metaphone и сделать триггер

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER dbo.relation_new_triu ON dbo.relation
WITH EXECUTE AS CALLER
FOR INSERT, UPDATE
AS
BEGIN
 UPDATE dbo.relation SET metaphone = dbo.ExtractInteger(phone) 
END
GO

ALTER TABLE dbo.relation
DISABLE TRIGGER relation_new_triu
GO


суть его такая, что у записи добавляемо-обновляемой берется из поля телефон только цифровая часть и заносится в поле metaphone(и по нему уже ищем)
в mssql на базе пробую - все успешно. а вот CRM не нравится такой поворот, пишет ошибку Update affected more than 1 row. Как-то можно ее обойти? в триггерах не силен, к сожалению... если этот вариант никак, в голову приходит только создать некую задачу, которая будет раз в сколько-то минут обновлять данные...
по идее можно заполнить metaphone только если поле пустое, после уже поле phone редко меняется.
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
Можно запрос переписать с join, объединив с таблицей inserted.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы