|
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) мало написал. пеши исчо. только завтра.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |