powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Триггер при добавлении записи.
25 сообщений из 39, страница 1 из 2
Триггер при добавлении записи.
    #38191517
rongo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Есть 2 справочника с одинаковым набором свойств Spr1 и Spr2.

При этом Spr1 управляется извне через ODBC. Под управлением понимается полная чистка справочника и добавление новых записей.

Нужно сделать такую штуку. В момент добавления новой записи в Spr1 нужно поискать такую запись в Spr2 и если не нашли, то добавить такую же запись в Spr2.

Понятно, когда количество свойств мало, то можно добавлять запись так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Trigger TriggerAfterInsert [ Event = INSERT, Time = AFTER ]
{
……
s oCall=##class(Spr2).%New()
s oCall.PROP1={PROP1}
s oCall.PROP2={PROP2}
s Status=oCall.%Save()
……
}



Но у меня таких свойств больше 50. Можно ли как-то проще сделать заполнение свойств Spr2 из Spr1?

Спасибо.
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38191521
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как вариант, во второй таблице, сделать нужные поля уникальными, и в триггере перовой таблицы просто вставлять новую строку во вторую игнорируя ошибки уникальности.
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38191598
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rongoНо у меня таких свойств больше 50. Можно ли как-то проще сделать заполнение свойств Spr2 из Spr1?
Можно написать программу (или метод спец. класса), которая за вас будет генерировать код такого метода.
Но обычно у свойств (и объекта в целом) есть особенности...

Во втором классе должны быть методы, которые выполняют логику:
- проверки наличия
- копирования из одного объекта в другой
- копирование с проверкой
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38191609
rongo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMorкак вариант, во второй таблице, сделать нужные поля уникальными, и в триггере перовой таблицы просто вставлять новую строку во вторую игнорируя ошибки уникальности.

Как-то игнорировать ошибке не хочется...
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38191621
rongo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
doublefintrongoНо у меня таких свойств больше 50. Можно ли как-то проще сделать заполнение свойств Spr2 из Spr1?
Можно написать программу (или метод спец. класса), которая за вас будет генерировать код такого метода.
Но обычно у свойств (и объекта в целом) есть особенности...

Во втором классе должны быть методы, которые выполняют логику:
- проверки наличия
- копирования из одного объекта в другой
- копирование с проверкой

Судя по ответу - это что-то страшное... Может как-то проще можно? При компиляции тригера {PROP1} меняются на %d(номер свойства). Может как то это можно использовать... Типа повторить логику компилятора... Только не понятно откуда взять номер свойства...
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38192421
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
%ConstructClone не подойдет?
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38196286
sigmov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rongo ,

Как насчет влоб через глобали хранения?
Код: c
1.
2.
3.
4.
5.
6.
7.
8.
9.
Trigger TriggerAfterInsert [ Event = INSERT, Time = AFTER ]
{
....
	#Dim Id As %String = {%%ID}
	If ('$Data(^Src2D(Id))) { // Проверяем на наличие записи в ^Src2D с таким же ID, если записи нету - выполняем
		Set ^Src2D(Id) = ^Src1D(Id) // Копируем значения из Src1 в Src2
		Do ##class(TEST2.Persist2).%SaveIndices(Id)	// Если нужно? - Строим индексы для новой записи в Src2
	}
....
}

P.S. Вот почему всех кто юзает Cache' посещают идеи реализовать что-то уродское....
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38196287
sigmov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Правильнее будет даже Merge ^Src2D(Id) = ^Src1D(Id)
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38196331
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sigmovВот почему всех кто юзает Cache' посещают идеи реализовать что-то уродское....
Не всех.

Отчасти это связано с тем, что можно вообще придумывать любые NoSQL хранения? Чего напроч лишены другие разработчики с "табличным" хранением данных...
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38196349
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то ТС не ставил задачу обновления двух идентичных справочников, а лишь справочников "с одинаковым набором свойств Spr1 и Spr2". Spr1 при такой постановке может быть подмножеством Spr2, значит, ID могут и не совпадать. Тогда предложенный способ вставки с игнорированием лишь одного вида ошибок представляется самым практичным.
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38196430
krvsasigmovВот почему всех кто юзает Cache' посещают идеи реализовать что-то уродское....
Не всех.

Отчасти это связано с тем, что можно вообще придумывать любые NoSQL хранения? Чего напроч лишены другие разработчики с "табличным" хранением данных...

Вообще-то, нормальные разработчики сами выбирают СУБД под задачу. Не подходит SQL-БД для хранения сессий - возьмёт Redis. Нужно хранить JSON-документы с поиском по полям - MongoDB или CouchDB. XML-документы - Sedna. Нужно хранить объекты - Cache' или реляционка с ORM. Нужны разнообразные отчёты - опять-таки "табличное" хранение данных.

Хреново, когда одну и ту же СУБД пытаются пихать везде, пытаясь придумать любые NoSQL, SQL и прочие хранения. И, если приходится реализовывать что-то уродское на Cache', наверное стоит задуматься, нафига каше вообще здесь нужна?
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38196535
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не рубящий в кашеВообще-то, нормальные разработчики сами выбирают СУБД под задачу.
Заблуждение. Часто (мягко говоря) у заказчика уже есть СХОД (СУБД - это вряд ли), и задачу нужно решить именно в ней. И уж совсем невероятно, чтобы заказчик вкладывал средства в разработку СУБД))
не рубящий в кашеНе подходит SQL-БД для хранения сессий - возьмёт Redis. Нужно хранить JSON-документы с поиском по полям - MongoDB или CouchDB. XML-документы - Sedna. Нужно хранить объекты - Cache' или реляционка с ORM. Нужны разнообразные отчёты - опять-таки "табличное" хранение данных.
Заблуждение. Разработчику не могут быть нужны какие-либо предопределенные структуры данных. Они могут быть прописаны в ТЗ - это бывает.
не рубящий в кашеХреново, когда одну и ту же СУБД пытаются пихать везде, пытаясь придумать любые NoSQL, SQL и прочие хранения.
Может быть. В IS этого и не делают. Хранят банально в базовой архитектуре))
не рубящий в кашеИ, если приходится реализовывать что-то уродское на Cache', наверное стоит задуматься, нафига каше вообще здесь нужна?
Поскольку в Cache имеется уникальная базовая технология для решения информационно-логических задач, то есть, для разработки приложений БД без использования СУБД, то здесь Вы правы - в философском смысле, никакие другие системы, конечно, не нужны. Но, с естественными монополиями нужно как-то бороться))...
А тема, наряду с
http://www.sql.ru/forum/actualthread.aspx?tid=1012388
полезная))
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38196625
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не рубящий в кашеВообще-то, нормальные разработчики сами выбирают СУБД под задачу.
Только где их взять?

не рубящий в кашеИ, если приходится реализовывать что-то уродское на Cache', наверное стоит задуматься, нафига каше вообще здесь нужна?
Или перестать реализовывать это уродство...
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38196635
Бредятинане рубящий в кашеВообще-то, нормальные разработчики сами выбирают СУБД под задачу.
Заблуждение. Часто (мягко говоря) у заказчика уже есть СХОД (СУБД - это вряд ли), и задачу нужно решить именно в ней. И уж совсем невероятно, чтобы заказчик вкладывал средства в разработку СУБД))

Здравствуйте, ЧАЛ! Если у заказчика стоит СХОД(СУБД и проч.), о которой вы рассуждаете, скорее всего этот заказчик - не наш клиент. Тем более, я писал о проектировании , а не о, мягко говоря, доработке.

Бредятинане рубящий в кашеНе подходит SQL-БД для хранения сессий - возьмёт Redis. Нужно хранить JSON-документы с поиском по полям - MongoDB или CouchDB. XML-документы - Sedna. Нужно хранить объекты - Cache' или реляционка с ORM. Нужны разнообразные отчёты - опять-таки "табличное" хранение данных.
Заблуждение. Разработчику не могут быть нужны какие-либо предопределенные структуры данных. Они могут быть прописаны в ТЗ - это бывает.

Прошу от вас ТЗ с такой конкретикой. Вряд ли дождусь, зная вашу активность по форуму. Потому что только разработчику и знать о структурах данных, с которыми он будет иметь дело. Это дело разработчика, ему и планировать предметную область, ему и думать о хранении в СУБД (у вас своё мнение о том, что является СУБД, просто предупреждаю).
Бредятинане рубящий в кашеХреново, когда одну и ту же СУБД пытаются пихать везде, пытаясь придумать любые NoSQL, SQL и прочие хранения.
Может быть. В IS этого и не делают. Хранят банально в базовой архитектуре))


Какая базовая архитектура у IS? Что это вообще такое? Жду ответа в этой ветке форума, а не ссылок. Именно ответов, а не разглагольстований о том, что такое архитектура, что такое базовая, и проч. Кстати, очень интересно, что вы понимаете под словом "архитектура".
Бредятинане рубящий в кашеИ, если приходится реализовывать что-то уродское на Cache', наверное стоит задуматься, нафига каше вообще здесь нужна?

Поскольку в Cache имеется уникальная базовая технология для решения информационно-логических задач, то есть, для разработки приложений БД без использования СУБД, то здесь Вы правы - в философском смысле, никакие другие системы, конечно, не нужны. Но, с естественными монополиями нужно как-то бороться))...
А тема, наряду с
http://www.sql.ru/forum/actualthread.aspx?tid=1012388
полезная))
Уникальная базовая технология - что вы имеете в виду? Мне честно, очень интерестно.
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38196638
krvsaне рубящий в кашеВообще-то, нормальные разработчики сами выбирают СУБД под задачу.
Только где их взять?


Откройте для себя гугл. Или яндекс.
krvsaне рубящий в кашеИ, если приходится реализовывать что-то уродское на Cache', наверное стоит задуматься, нафига каше вообще здесь нужна?
Или перестать реализовывать это уродство...
Согласен.
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38196689
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не рубящий в кашеЗдравствуйте, ЧАЛ! Если у заказчика стоит СХОД(СУБД и проч.), о которой вы рассуждаете,
Это ошибка. Надеюсь, не умышленная. Я ни о какой СХОД (СУБД и проч.) не рассуждаю.
не рубящий в кашескорее всего этот заказчик - не наш клиент.
Мне о Ваших клиентах ничего не известно. Не стоит развивать эту мысль, и все дальше уходить от темы в сторону характеристик Ваших заказчиков.
не рубящий в кашеТем более, я писал о проектировании , а не о, мягко говоря, доработке.
Серьезная ошибка - Вы не писали о проектировании, а вот только сейчас об этом написали. И еще более серьезное заблуждение - и доработка, и разработка, конечно же, предполагают проектирование, и даже перепроектирование))
не рубящий в кашеПрошу от вас ТЗ с такой конкретикой. Вряд ли дождусь, зная вашу активность по форуму.
В этой теме рассматривается ТЗ с такой конкретикой)) Так что уже дождались, даж до моего ответа))
не рубящий в кашеПотому что только разработчику и знать о структурах данных, с которыми он будет иметь дело. Это дело разработчика, ему и планировать предметную область, ему и думать о хранении в СУБД (у вас своё мнение о том, что является СУБД, просто предупреждаю).
Серьезные заблуждения. И главное из них - я здесь свои мнения не высказываю. Только устоявшиеся чужие.
не рубящий в кашеКакая базовая архитектура у IS? Что это вообще такое? Жду ответа в этой ветке форума, а не ссылок.
По вежливее, пожалуйста)) Это не учебный портал. Но, в этом разделе есть тема, кажется "Вопросы новичков". Задайте там вопросы, если Вы еще не разобрались в технологии.
не рубящий в кашеИменно ответов, а не разглагольстований о том, что такое архитектура, что такое базовая, и проч. Кстати, очень интересно, что вы понимаете под словом "архитектура".
А мне уже давно не интересно. Поэтому обойдусь без разглагольствований))
не рубящий в кашеУникальная базовая технология - что вы имеете в виду? Мне честно, очень интерестно.
Я имею в виду хорошо всем известную базовую технологию. А так же я имею в виду. что Вам это совершенно не интересно.
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38196805
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не рубящий в кашеОткройте для себя гугл. Или яндекс.
Это там ищут работников?
А тех, что есть отправить обратно в Гугл и Яндекс?
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38197208
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rongoМожет как-то проще можно?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 Trigger TriggerIA [ Event = INSERT, Time = AFTER ] {
  s sc=##class(Spr2).CheckAndCopy({ID})
  ....
 }

Class Test.SPR2 ....

 ClassMethod CheckAndCopy(spr1) as %Status {
    s props="PROP1,PROP2"
    s sql="INSERT INTO test.SPR2 ("_props_") "
    _" SELECT "_props_" FROM test.SPR1 WHERE ID=? "
    s rs=##class(%SQL.Statement).%ExecDirect(.stm,sql,spr1)
    Q:'rs.%SQLCODE $$$OK
    Q $$$ERROR(rs.%SQLCODE, $SYSTEM.SQL.SQLCODE(rs.%SQLCODE))
 }
...
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38197253
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не рубящий в кашеВообще-то, нормальные разработчики сами выбирают СУБД под задачу. Не подходит SQL-БД для хранения сессий - возьмёт Redis. Нужно хранить JSON-документы с поиском по полям - MongoDB или CouchDB. XML-документы - Sedna. Нужно хранить объекты - Cache' или реляционка с ORM. Нужны разнообразные отчёты - опять-таки "табличное" хранение данных.
Вы же читали это или перевод ?
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38198588
Бредятинане рубящий в кашеЗдравствуйте, ЧАЛ! Если у заказчика стоит СХОД(СУБД и проч.), о которой вы рассуждаете,
Это ошибка. Надеюсь, не умышленная. Я ни о какой СХОД (СУБД и проч.) не рассуждаю.
ok.
Бредятинане рубящий в кашескорее всего этот заказчик - не наш клиент.
Мне о Ваших клиентах ничего не известно. Не стоит развивать эту мысль, и все дальше уходить от темы в сторону характеристик Ваших заказчиков.
ok. Я говорил о том, что если у заказчика стоит не известная мне СУБД, я бы не рискнул с ней связываться.
Бредятинане рубящий в кашеТем более, я писал о проектировании , а не о, мягко говоря, доработке.
Серьезная ошибка - Вы не писали о проектировании, а вот только сейчас об этом написали. И еще более серьезное заблуждение - и доработка, и разработка, конечно же, предполагают проектирование, и даже перепроектирование))

Серьезная ошибка, что для вас выбор СУБД не явлется проектированием.
Бредятинане рубящий в кашеПрошу от вас ТЗ с такой конкретикой. Вряд ли дождусь, зная вашу активность по форуму.
В этой теме рассматривается ТЗ с такой конкретикой)) Так что уже дождались, даж до моего ответа))

Мой ответ был изначально адресован krvsa. И если вы удосужетесь прочитать-таки эту тему, то поймёте, что проблема в структуре БД. (И зачем я опять поднял эту тему?)
Бредятинане рубящий в кашеПотому что только разработчику и знать о структурах данных, с которыми он будет иметь дело. Это дело разработчика, ему и планировать предметную область, ему и думать о хранении в СУБД (у вас своё мнение о том, что является СУБД, просто предупреждаю).
Серьезные заблуждения. И главное из них - я здесь свои мнения не высказываю. Только устоявшиеся чужие.

Без комментариев, ЧАЛ.
Бредятинане рубящий в кашеКакая базовая архитектура у IS? Что это вообще такое? Жду ответа в этой ветке форума, а не ссылок.
По вежливее, пожалуйста)) Это не учебный портал. Но, в этом разделе есть тема, кажется "Вопросы новичков". Задайте там вопросы, если Вы еще не разобрались в технологии.

ok. Сложно с вами дискутировать. Напишите мне ещё про Дейта. И Кодда не забудьте добавить. Хотя, да, гораздо лучше послать собеседника никуда.
Бредятинане рубящий в кашеИменно ответов, а не разглагольстований о том, что такое архитектура, что такое базовая, и проч. Кстати, очень интересно, что вы понимаете под словом "архитектура".
А мне уже давно не интересно. Поэтому обойдусь без разглагольствований))
ok.
Бредятинане рубящий в кашеУникальная базовая технология - что вы имеете в виду? Мне честно, очень интерестно.
Я имею в виду хорошо всем известную базовую технологию. А так же я имею в виду. что Вам это совершенно не интересно. ok. Очередной слив.
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38198605
doublefintне рубящий в кашеВообще-то, нормальные разработчики сами выбирают СУБД под задачу. Не подходит SQL-БД для хранения сессий - возьмёт Redis. Нужно хранить JSON-документы с поиском по полям - MongoDB или CouchDB. XML-документы - Sedna. Нужно хранить объекты - Cache' или реляционка с ORM. Нужны разнообразные отчёты - опять-таки "табличное" хранение данных.
Вы же читали это или перевод ?

Да, читал. Тем более, взял от Твида маппинг JSON-структур. Но я всё же придерживаюсь мнения, что для каждой задачи должно быть своё, удобное решение.
Ведь согласитесь, что для реляционного хранилища лучше использовать СУБД, которая сама построит для вас индексы и позаботится о производительности ваших SQL-запросов. И для хранения JSON'а лучше взять ту СУБД, что потом позволит искать по нему. Без последующих забот об индексах в глобалах и прочего.
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38198613
krvsaне рубящий в кашеОткройте для себя гугл. Или яндекс.
Это там ищут работников?
А тех, что есть отправить обратно в Гугл и Яндекс?

Вам бы всё себя подороже продать... :))
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38198619
rongo, Прошу прощение за превращение и этой темы в адовый оффтопик.
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38198640
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не рубящий в каше
Да, читал. Тем более, взял от Твида маппинг JSON-структур.

А что за маппинг JSON-структур? Не хотите статью написать о применении? Думаю многим будет интересно.
...
Рейтинг: 0 / 0
Триггер при добавлении записи.
    #38198641
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не рубящий в кашеВам бы всё себя подороже продать... :))
У вас обратное желание?
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Триггер при добавлении записи.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]