我知道COLUMNS_UPDATED,我需要一些快速的快捷方式(如果有人做了,我已经制作了一个,但如果有人可以节省我的时间,我会恭维它)
我需要基本上只有更新列值的XML,我需要这个用于复制目的.
SELECT*FROM inserted为我提供了每一列,但我只需要更新的列.
像下面这样......
CREATE TRIGGER DBCustomers_Insert
ON DBCustomers
AFTER UPDATE
AS
BEGIN
DECLARE @sql as NVARCHAR(1024);
SET @sql = 'SELECT ';
I NEED HELP FOR FOLLOWING LINE ...., I can manually write every column, but I need
an automated routin which can work regardless of column specification
for each column, if its modified append $sql = ',' + columnname...
SET @sql = $sql + ' FROM inserted FOR XML RAW';
DECLARE @x as XML;
SET @x …Run Code Online (Sandbox Code Playgroud) 我想知道哪些列在更新操作期间更新操作在第一个scaaning书籍在线上看起来像COLUMNS_UPDATED是完美的解决方案但这个函数实际上不检查值是否已更改,它只检查更新子句中选择的列,有人有其他建议吗?
我经常以下列形式运行查询:
select * from SomeTable where id=12345
Run Code Online (Sandbox Code Playgroud)
页面后一页可能正在运行相同的查询,因为用户需要该行的值.通常我会获取一次并缓存它,但用户可以随时更改行,而其他用户也同时在SomeTable中进行更改,因此我无法对整个表进行缓存.我还有一个问题,即我们有一个用于Web服务器的集群,因此当缓存失效时,我无法在Web服务器上进行内部跟踪.
有没有办法检测到这一行发生了变化?SqlDependecyCache类可以在这里帮助单个行到多个Web服务器吗?是否有一些可以通知我的Web应用程序的触发器或其他范例?
我想要两全其美 - 网络服务器上的实时缓存更新,但我不想运行任何查询以查看该行是否已更改,因为我可以轻松地再次获取该行.
我是 SQL Server 2008 的新手,需要大家的建议。我想找出一个表的 SQL Server 2008中的inserted和表中的更改值,因为我当前正在进行审计跟踪以保留旧值和新值。deleted如何循环所有列以找出删除和插入表中哪个字段的值发生变化?我尝试过 if else 语句进行比较
例如:
create trigger trg_XXX on dbo.table
after update
as
begin
declare
@oldID varchar(6),
@newID varchar(6)
select @oldID = ID from deleted
select @newID = ID from inserted
if(@oldID != @newID)
insert into table (a, b) values (@oldID, @newID)
else
print('do nothing')
Run Code Online (Sandbox Code Playgroud)
有没有办法使用游标循环删除和插入的表或任何替代方法?能给我一些例子吗?