我不知道这些要求是否标准,但我想知道是否有解决办法可以做到以下几点:
我宁愿不必为每个表编写代码.我想知道是否有一个解决方案,您可以安装在ms-sql之上,这将为您做到这一点?
在我的应用程序的SQL Server后端中,我想为一堆关键表创建历史表,这些表将跟踪行的更改历史记录.
我的整个应用程序使用存储过程,没有嵌入式SQL.与数据库修改这些表的唯一连接是通过应用程序和SP接口.传统上,我曾与之合作的商店使用触发器执行此任务.
如果我可以在存储过程和触发器之间进行选择,哪个更好?哪个更快?
假设我将员工数据存储xml在我的日志表的列中.有时,数据也会在xml存储过程的列中更新.
这是示例示例
DECLARE @XML1 XML
DECLARE @XML2 XML
SET @XML1 =
'<NewDataSet>
<Employee>
<EmpID>1005</EmpID>
<Name> keith </Name>
<DOB>12/02/1981</DOB>
<DeptID>ACC001</DeptID>
<Salary>10,500</Salary>
</Employee>
</NewDataSet>'
SET @XML2 =
'<NewDataSet>
<Employee>
<EmpID>1006</EmpID>
<Name> keith </Name>
<DOB>05/02/1981</DOB>
<DeptID>ACC002</DeptID>
<Salary>10,900</Salary>
</Employee>
</NewDataSet>'
Run Code Online (Sandbox Code Playgroud)
xml我需要显示的两个数据有一些区别,比如旧值和新值作为sql的输出
Old Value New Value
--------- ---------
1005 1006
12/02/1981 05/02/1981
ACC001 ACC002
10,500 10,900
Run Code Online (Sandbox Code Playgroud)
我只需要像上面那样展示差异.因此,请指导我如何使用XQuery比较两个xml数据,并仅在SQL Server中以上述方式显示差异.请引导我使用代码段.谢谢
我想创建一个触发器来检测SQL Server中的行是否已更改。我当前的方法是遍历每个字段,应用COLUMNS_UPDATED()来检测是否已调用UPDATE,然后最后比较插入或删除的同一行(由PK标识)的该字段的值。
我想消除程序中的循环。可能我可以将插入和删除的内容转储到一个表中,对所有列进行分组,然后选择count = 2的行。这些行将被视为未更改。
最终目标是创建审核跟踪:1)跟踪用户和时间戳2)跟踪插入,删除和REAL更改
任何建议表示赞赏。