powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Триггер, которые бы не писал все строки.
11 сообщений из 11, страница 1 из 1
Триггер, которые бы не писал все строки.
    #39564255
гогол
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро.

Подскажите можно ли сделать триггер, например на удаление в табличке.

Но чтобы он не записывал каждую удаленную строку, а записывал одну строку при одном DELETE ?
...
Рейтинг: 0 / 0
Триггер, которые бы не писал все строки.
    #39564259
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гогол,

а триггер должен обязательно что-то записывать?
Это всего лишь процедура, она выполняет только то, что вы напишете.
...
Рейтинг: 0 / 0
Триггер, которые бы не писал все строки.
    #39564265
гогол
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapгогол,

а триггер должен обязательно что-то записывать?
Это всего лишь процедура, она выполняет только то, что вы напишете.

да, должен записывать данные о клиенте, который вызвал DML.
...
Рейтинг: 0 / 0
Триггер, которые бы не писал все строки.
    #39564271
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гоголiapгогол,

а триггер должен обязательно что-то записывать?
Это всего лишь процедура, она выполняет только то, что вы напишете.

да, должен записывать данные о клиенте, который вызвал DML.Просто напишите просто и понятно на русском языке,
что должно получиться. Это можно сделать?
И учтите, что один DELETE необязательно удаляет одну строку. Может и больше. А может и вовсе ни одной.
...
Рейтинг: 0 / 0
Триггер, которые бы не писал все строки.
    #39564275
гогол
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapгоголпропущено...


да, должен записывать данные о клиенте, который вызвал DML.Просто напишите просто и понятно на русском языке,
что должно получиться. Это можно сделать?
И учтите, что один DELETE необязательно удаляет одну строку. Может и больше. А может и вовсе ни одной.


Надо чтобы при одной команде DELETE, которая удаляет over 9000 строк, триггер записывал только одну строку.
...
Рейтинг: 0 / 0
Триггер, которые бы не писал все строки.
    #39564280
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create table dbo.test22 (id int);
insert into dbo.test22 values(1), (2), (3), (4), (5);
go

alter trigger dbo.tg1_after_delete on dbo.test22 after delete
as 
set nocount on;
print user;
go

delete dbo.test22


только вам это надо не принтить, а писать куда там вам надо
...
Рейтинг: 0 / 0
Триггер, которые бы не писал все строки.
    #39564281
гогол
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, например при 1 DELETE вставляет количество строк столько, сколько строк было удалено.

А строк может быть миллиард.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
USE AdventureWorks2008R2;
GO
IF OBJECT_ID ('Sales.reminder2','TR') IS NOT NULL
    DROP TRIGGER Sales.reminder2;
GO
CREATE TRIGGER reminder2
ON Sales.Customer
AFTER DELETE 
AS

INSERT INTO tr_table(spid) @@SPID;

GO





Нужна 1 строка.
...
Рейтинг: 0 / 0
Триггер, которые бы не писал все строки.
    #39564282
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гоголВот, например при 1 DELETE вставляет количество строк столько, сколько строк было удалено.

А строк может быть миллиард.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
USE AdventureWorks2008R2;
GO
IF OBJECT_ID ('Sales.reminder2','TR') IS NOT NULL
    DROP TRIGGER Sales.reminder2;
GO
CREATE TRIGGER reminder2
ON Sales.Customer
AFTER DELETE 
AS

INSERT INTO tr_table(spid) @@SPID;

GO






Нужна 1 строка.
значит, вы свой миллиард удаляете по одной строке,
написав миллиард делитов.
...
Рейтинг: 0 / 0
Триггер, которые бы не писал все строки.
    #39564283
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гогол,

А как это удаление выглядит?
Если это
Код: sql
1.
delete from table where id>9000



То тригер выстреллит 1 раз, а если на клиенте открывается рекордсет и удаляет запись по 1, тригер будет стреллять каждый раз. И понять, что это 1 вызов на самом деле будет не тревиальной задачей
...
Рейтинг: 0 / 0
Триггер, которые бы не писал все строки.
    #39564287
гогол
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123,

Вы правы.

и правда, было просто миллиард DELETE ов.


При одной команде делете удаляющей много строк, триггер вставляет одну.

Большое спасибо.
...
Рейтинг: 0 / 0
Триггер, которые бы не писал все строки.
    #39564290
гогол
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шыфлгогол,

А как это удаление выглядит?
Если это
Код: sql
1.
delete from table where id>9000



То тригер выстреллит 1 раз, а если на клиенте открывается рекордсет и удаляет запись по 1, тригер будет стреллять каждый раз. И понять, что это 1 вызов на самом деле будет не тревиальной задачей

Действительно дело в пирложении оказалось.

Попробую это профайлером отловить.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Триггер, которые бы не писал все строки.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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