SQL Server 2005 зная, что новая запись вставлена - PullRequest
0 голосов
/ 11 февраля 2012

Есть ли способ узнать, вставлена ​​ли новая запись, кроме записи триггера в sql server 2005. (Это может быть tsql или java ...), поскольку поставщик не разрешает правый триггер на этой БД... Также, как создать файл с данными вновь вставленной строки .. BCP является хорошим решением ??

Ответы [ 4 ]

1 голос
/ 12 февраля 2012

Вы можете определить таблицу аудита, а затем добавить команду OUTPUT в свои операторы INPUT или UPDATE (тоже DELETE, кстати).

create table fab4 (id int identity(1,1),FName varchar(80));
create table fab4_audit (act varchar(10),id int, FName_old varchar(80), FName_new varchar(80), ts datetime not null default(getdate()));

-- insert
insert into fab4(FName)
output
'INSERTED'
, inserted.*
into fab4_audit([act],id,FName_new)
select 'John' union all
select 'Paul' union all
select 'George' union all
select 'Ringo';
go

-- update
update f
set FName='Walrus'
output
'UPDATED'
, inserted.id
, deleted.FName
, inserted.FName
into fab4_audit([act],id,FName_old,FName_new)
from fab4 f
where FName='Paul';

-- delete
delete f
output
'DELETED'
, deleted.id
, deleted.FName
into fab4_audit([act],id,FName_old)
from fab4 f
where FName in ('John','George');
go

select * from fab4;
select * from fab4_audit;
go
0 голосов
/ 12 февраля 2012

Я думаю, что вам нужно определить «Есть ли способ узнать, вставлена ​​ли новая запись, кроме триггера записи». Триггеры - это в основном обработчики событий в SQL. Итак, вы хотите иметь что-то вроде триггера, который срабатывает всякий раз, когда в таблицу вставляется новая строка? Если да, то ответ да, он называется SQL Server Notification Services.

Вот статья для начинающих , но я уверен, что вы можете просто погуглить "уведомление сервера SQL" и получить массу результатов.

Вот еще одна хорошая статья: Использование SqlDependency для мониторинга изменений базы данных SQL

0 голосов
/ 12 февраля 2012

Есть ли в таблице первичный ключ с автоинкрементом или столбец createDate?Вы можете написать свою работу cron, которая периодически просыпается и запрашивает, чтобы узнать, попало ли что-нибудь новое в базу данных с тех пор, как вы в последний раз запускали задачу cron.

0 голосов
/ 12 февраля 2012

Я бы предложил лучшую практику, которая также может помочь вам здесь.Если вы ограничиваете обновления и вставки только для прохождения хранимой процедуры, вы можете использовать этот процесс для записи либо записи аудита, либо просто для обновления поля времени / даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...