请问:如何得到数据库中某个表的更新事件?

900126 2006-05-21 11:41:14
用什么控件可以监测到SQLSERVER数据库被改变?比如,当某个表格被更新或新增时,能够产生一个VB事件?
...全文
212 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
willdavis 2006-07-14
  • 打赏
  • 举报
回复
of123()
dim withevents RS as recordset
有这些标记吗?如果有这些,应该就可以了。
RecordChangeComplete adReason, cRecords, pError, adStatus, pRecordset
mustudent 2006-07-14
  • 打赏
  • 举报
回复
利用SQL Server的触发器
IF EXISTS (SELECT name
FROM sysobjects
WHERE name = N'<trigger_name, sysname, trig_test>'
AND type = 'TR')
DROP TRIGGER <trigger_name, sysname, trig_test>
GO

CREATE TRIGGER <trigger_name, sysname, trig_test>
ON <table_or_view_name, sysname, pubs.dbo.sales>
FOR INSERT, UPDATE
AS
If UPDATE(<column_1, sysname, stor_id>) OR UPDATE(<column_2, sysname, ord_num>)
BEGIN
RAISERROR ('These columns should never be updated', 16, 1)
ROLLBACK TRANSACTION
END
GO

of123 2006-06-22
  • 打赏
  • 举报
回复
dim withevents RS as recordset
Tiger_Zhao 2006-06-22
  • 打赏
  • 举报
回复
如果要实时校验更新记录的数据,只能用 SQL 触发器。
如果只进行对更新记录进行查询后的显示、关联计算等,可以在表中添加一个 TimeStamp 字段,程序中不停查询大于上次查询中的最大 TimeStamp 的记录,就能取得新增/更新的记录了。
900126 2006-06-22
  • 打赏
  • 举报
回复
那个对象不行,在那里只有自己程序修改数据时,才有事件响应, 任何其他程序(或手工)修改你的数据库的时候,都没有程序响应.
恐怕这种事件响应只能在数据库里边吧?
yuvotesyg518 2006-06-21
  • 打赏
  • 举报
回复
Microsoft ADO Data Control
Recordset 对象
900126 2006-06-21
  • 打赏
  • 举报
回复
那个记录集有事件啊?dim RS as recordset 里面有事件吗?
yuvotesyg518 2006-05-22
  • 打赏
  • 举报
回复
WillChangeRecord 和 RecordChangeComplete 事件
WillChangeRecord 事件在 Recordset 中的一个或多个记录(行)更改之前调用。RecordChangeComplete 事件在一个或多个记录更改之后调用。

语法
WillChangeRecord adReason, cRecords, adStatus, pRecordset
RecordChangeComplete adReason, cRecords, pError, adStatus, pRecordset

参数
adReason
指定此事件的起因。其值可以是 adRsnAddNew、adRsnDelete、adRsnUpdate、adRsnUndoUpdate、adRsnUndoAddNew、adRsnUndoDelete 或 adRsnFirstChange。

cRecords
指示受更改影响的记录数目。

pError
描述当 adStatus 的值为 adStatusErrorsOccurred 时发生的错误;否则将不对它进行设置。

adStatus
状态值。

当调用 WillChangeRecord 时,如果引发事件的操作成功,此参数将设置为 adStatusOK。如果此事件无法请求取消挂起的操作,它将被设置为 adStatusCantDeny。

当调用 RecordChangeComplete 时,如果引发事件的操作成功,此参数将设置为 adStatusOK;否则设置为 adStatusErrorsOccurred。

在返回 WillChangeRecord 之前,将此参数设置为 adStatusCancel 可请求取消引发此事件的操作。

在返回 RecordChangeComplete 之前,将此参数设置为 adStatusUnwantedEvent 可避免后续的通知。

pRecordset
引发此事件的 Recordset。

说明
WillChangeRecord 或 RecordChangeComplete 事件可能因下列 Recordset 操作而针对行中第一个更改的字段发生:Update、Delete、CancelUpdate、AddNew、UpdateBatch 和 CancelBatch。Recordset CursorType 的值确定了引发事件的操作。

在 WillChangeRecord 事件期间,Recordset Filter 属性将被设置为 adFilterAffectedRecords。在处理事件时不能更改此属性。
yuvotesyg518 2006-05-22
  • 打赏
  • 举报
回复
记录集的 WillChangeRecord 和 RecordChangeComplete 事件。
详细情况请查看ADO的Recordset在MSDN中的相关帮助。

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧