Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Нужен совет
|
|||
|---|---|---|---|
|
#18+
В таблицу Т1 некая программа вставляет записи (повлиять на ее действие я не могу). Триггером для вставки эти данные по нужным мне условиям вносятся в таблицу Т2. Я не хочу хранить данные в Т1 и в конце работы триггера пишу такую строку: DELETE FROM T1 Все работает, но может быть есть способ лучше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2001, 12:14 |
|
||
|
Нужен совет
|
|||
|---|---|---|---|
|
#18+
Может, на Т1 повесить INSTEAD OF trigger? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2001, 14:15 |
|
||
|
Нужен совет
|
|||
|---|---|---|---|
|
#18+
Можно сначала откатить транзакцию, потом сделать вставку в T2 из inserted, примерно так: CREATE TRIGGER [TI_T1] ON [T1] FOR INSERT AS ROLLBACK INSERT INTO T2 SELECT * FROM inserted ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2001, 07:15 |
|
||
|
Нужен совет
|
|||
|---|---|---|---|
|
#18+
2.Владимир Смирнов А я всегда думал, что если в триггере сделать ROLLBACK, то содержимое таблиц inserted и deleted чистится. ИМХО, если MSSQL 2000 то ISTEAD OF триггер самое то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2001, 08:27 |
|
||
|
Нужен совет
|
|||
|---|---|---|---|
|
#18+
MishGan, то что мы думаем о действительности не всегда соответствует действительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2001, 11:10 |
|
||
|
Нужен совет
|
|||
|---|---|---|---|
|
#18+
Владимир Смирнов, дык, я вроде проверил даже - действительно чистится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2001, 15:38 |
|
||
|
Нужен совет
|
|||
|---|---|---|---|
|
#18+
Триггер запускается в неявной транзакции. Если сказать Rollback в любом месте этой транзакции, транзакция откатится ВСЯ. Вариант, предложенный alexeyvg, IMHO самый грамотный. Не изобретайте велосипед. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2001, 16:25 |
|
||
|
Нужен совет
|
|||
|---|---|---|---|
|
#18+
Garya. Если сказать Rollback в любом месте триггера, транзакция откатится НЕ ВСЯ, а ДО НАЧАЛА. Триггер будет продолжать работу до завершения, и всё, что он сделает после Rollback, сохранится. Другой вопрос, будет или не будет после Rollback в триггере существовать inserted? MishGan утверждает, что по результатам его проверки - нет, не будет (или, как он выражается, чистится). Согласно моим проверкам - inserted существовать будет, и триггер нормально отрабатывает. А вот INSTEAD OF trigger не реализован, у меня SQL 7.0. Отсюда вывод: самый правильный вариант у Сергея, так как его работа не зависит от версии сервера, а другие - зависимые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2001, 08:06 |
|
||
|
Нужен совет
|
|||
|---|---|---|---|
|
#18+
2Владимир Смирнов Попробуйте у себя выполнить этот скрипт create table a(i int) create table b(i int) go create trigger aaa on a for insert as select count(*) 'before' from inserted rollback tran select count(*) 'after' from inserted go insert a select 111 У меня(SQL2000) он выдаёт такое: before ----------- 1 (1 row(s) affected) after ----------- 0 Неужели в 7-м будет по-другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2001, 09:45 |
|
||
|
Нужен совет
|
|||
|---|---|---|---|
|
#18+
А у меня вот такое: before ----------- 1 (1 row(s) affected) after ----------- 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2001, 10:16 |
|
||
|
Нужен совет
|
|||
|---|---|---|---|
|
#18+
Странно. У меня результат разный получился. На 2000 табличка inserted чистится, а на 7.0. не чистится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2001, 10:47 |
|
||
|
Нужен совет
|
|||
|---|---|---|---|
|
#18+
Видимо, Microsoft подходит по принципу: поменьше вопросов освещать в документации, а раз в документации на этот счёт ничего не написано, то может быть реализовано как угодно. As Is, так и используйте. Ещё один аргумент, чтобы воздерживаться (и мне в первую очередь) от использования конструкций, которые явно не описаны в BOL. Даже если они и работают, ... сейчас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2001, 12:04 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32017443&tid=1824844]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
82ms |
get topic data: |
12ms |
get forum data: |
4ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 269ms |
| total: | 472ms |

| 0 / 0 |
