|   |   | 
| 
 | v7: Помогите написать триггер | ☑ | ||
|---|---|---|---|---|
| 0
    
        v4442 21.01.12✎ 16:30 | 
        Помогите новичку написать триггер.
  В файле УРБД _1SUPDTS нужно удалять в соответствии значению поля документа. В документе есть поле, по котором выбирается значение и по этому значению нужно пересылать документ в соответствующую распределенную базу. Сразу по учебному коду есть проблемы. CREATE TRIGGER URBD ON dbo._1SUPDTS FOR INSERT AS BEGIN DECLARE @DBSign char(3) SELECT @DBSign = i.DBSign FROM inserted i IF (@DBSIGN ='SS2') begin rollback end END Удалятся записи со значением SS1, SS2 поля DBSign, SS3, SS4 …. Не удаляются. Спец напишет процедуру наверно за 5 мин. Готов заплатить разумную цену за работающую процедуру | |||
| 1
    
        v4442 21.01.12✎ 17:12 | 
        Up     | |||
| 2
    
        Rie 21.01.12✎ 17:27 | 
        (0) Что-то я не понял - а где ты что удаляешь? Да и вообще несколько странный код...     | |||
| 3
    
        Рэйв 21.01.12✎ 17:31 | 
        разумный совет.Бесплатно.
  Ты откуда то не оттуда зпшел на решение своей задачи. | |||
| 4
    
        v4442 21.01.12✎ 17:31 | 
        (2) Удаляю строку из таблицы _1SUPDTS, на sql.
  Создал триггер в таблиице с кодом (0) | |||
| 5
    
        v4442 21.01.12✎ 17:32 | 
        (3) какие предложения есть?     | |||
| 6
    
        v4442 21.01.12✎ 17:35 | 
        Ищу решения на 
  http://www.sql.ru/forum/afsearch.aspx?s=CREATE+TRIGGER&submit=%CD%E0%E9%F2%E8&bid=1 Пока не нашел :( | |||
| 7
    
        Rie 21.01.12✎ 17:38 | 
        (4) Наверное, в (0) имелось в виду
  SET @DBSIGN = (SELECT DBSIGN FROM INSERTED) | |||
| 8
    
        Rie 21.01.12✎ 17:39 | 
        +(7) Но я так и не понял, что тебе надо удалить.     | |||
| 9
    
        v4442 21.01.12✎ 17:41 | 
        (7) спасибо поробую
  (8) нужно удалять запись в таблице | |||
| 10
    
        Rie 21.01.12✎ 17:45 | 
        (9) Ты бы задачу сформулировал по-человечески. А то я тупой, телетяпией не страдаю, и так и не понял - что за строку ты собрался удалять из _1SUPDTS при вставке другой строки.     | |||
| 11
    
        v4442 21.01.12✎ 17:53 | 
        (10) При изменении документа в центральной базе , в таблице _1SUPDTS
  создаются записи, по которой данный документ мигрирует в распреленные базу. У документа признак миграции стоит во все базы . Нужно анализировать поле ТТТ в документе и по значению его , создавать запись не для всех распределенных баз, а анализировать поле NNN и по его значение создавать нужную запись. | |||
| 12
    
        Rie 21.01.12✎ 17:56 | 
        (11) А просто исключить эту базу из списка баз, в которые идёт миграция документа - религия не позволяет?
  Ну и наконец, твой триггер сработает при любой вставке в _1SUPDTS, не только для данного документа. Наверное, это неправильно? | |||
| 13
    
        v4442 21.01.12✎ 17:58 | 
        (12) Базы все нужны, как раз и нужна такая логика, чтоб мигрировали документы по адресантам.     | |||
| 14
    
        Rie 21.01.12✎ 18:00 | 
        (13)
  "Как хотел бы я покрасить Бакенбарды в цвет зелёный, В руки веер взять побольше, Чтобы их никто не видел" (c) Л.Кэррол У данного документа (и только у него) в Миграция не включай в список баз ту, куда ему нельзя мигрировать - и наступит счастье. А триггер твой - всё равно имеет хороший шанс быстро погибнуть при первой же реструктуризации базы. | |||
| 15
    
        v4442 21.01.12✎ 18:01 | 
        (12) когда заработает код (0), буду анализировать поле  typeid
  в таблице _1SUPDTS | |||
| 16
    
        v4442 21.01.12✎ 18:02 | 
        (14) Триггер не гибнет.     | |||
| 17
    
        Rie 21.01.12✎ 18:04 | 
        (15) А светлая идея - воспользоваться штатным механизмом - почему не нравится?     | |||
| 18
    
        v4442 21.01.12✎ 18:04 | 
        http://www.asd-dnepr.com/urbd/index1.html
  Таблица, в которой буферизируются изменения - _1SUPDTS. Очень полезная таблица,применять ее можно в задачах, лежащих за областью применения УРБД. Например, одно из моих решений в области аналитических систем для пополнения своей базы данных из базы 1С пользуется именно этой таблицей. В базе-источнике 1С заведена фиктивная периферийная база данных,изменения, которые отражены в этой таблице, обрабатываются уже моим механизмом, для которого важно иметь информацию об измененных с последнего импорта данных объектах. | |||
| 19
    
        v4442 21.01.12✎ 18:06 | 
        (15) как можно штатными средствами это сделать? это 77, а не v8     | |||
| 20
    
        Rie 21.01.12✎ 18:10 | 
        (19) В 7.7 на закладке Миграция у документа поле "Дополнительно" видишь? Вот это оно (список баз, куда мигрировать - при выбранном переключателе "Место создания и центр").
  Кроме того, можно отключить автоматическую регистрацию измерений и включать/отключать её в нужный момент программно. | |||
| 21
    
        v4442 21.01.12✎ 18:13 | 
        Документ мигрирует во все базы, но нужно по одному полю данного документа выбирать куда конкретный документ данного виду будет мигрировать.     | |||
| 22
    
        Rie 21.01.12✎ 18:17 | 
        (21) Хм... А в (0) написано нечто совсем иное...
  Так исправленный код заработал? | |||
| 23
    
        v4442 21.01.12✎ 18:18 | 
        (22) Пока выгружаю - загружаю базы.     | |||
| 24
    
        v4442 21.01.12✎ 19:44 | 
        (7) результат тот же
  с даным триггером :( CREATE TRIGGER URBD ON dbo._1SUPDTS AFTER INSERT AS BEGIN DECLARE @DBSign char(3), @TYPEID INT SET @DBSIGN = (SELECT DBSIGN FROM INSERTED) IF (@DBSIGN ='SS2') rollback END | |||
| 25
    
        rs_trade 21.01.12✎ 19:59 | 
        (0) контакты в личке. за денежку легко забацаю любой каприз.     | |||
| 26
    
        v4442 21.01.12✎ 20:04 | 
        (25) скоко ?     | |||
| 27
    
        rs_trade 21.01.12✎ 20:05 | 
        (26) пиши в аську. возможно договоримся.     | |||
| 28
    
        v4442 21.01.12✎ 20:38 | 
        (27)написал в аську     | |||
| 29
    
        rs_trade 21.01.12✎ 21:54 | 
        (28) мало написал. пеши исчо. только завтра.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |