【发布时间】:2013-10-25 22:00:15
【问题描述】:
我正在我的应用程序中实施审计跟踪。我跟着this 和this 创建了只需要审计的表。
我有一个下表来存储患者信息。
TenantId 代表每个租户数据,因为它是一个多租户应用程序
Person 和Patient 表
人物
Id、TenantId、FirstName、LastName、DOB、Mobile、Email、AddedBy、UpdatedBy、IsDeleted
患者
Id、PatientIDentifier、IsOP、CanSendSMS、AddedBy、UpdatedBy、IsDeleted
还有一张桌子
约会
Id、PatientId、AppointmentDate、DoctorId、价格、AddedBy、UpdateBy
审计历史表结构
人物历史
AuditId、Id、FirstName、LastName、DOB、AddedBy、UpdatedBy、AuditUserId、AuditDate、Action
这里Action代表A(ADD)/U(update)/D(delete)
为Patient, Appointment创建了相同的结构
现在,每当添加/删除/更新发生时,我都可以将触发器插入到历史记录表中。
现在我在审计历史表中获得了可用的数据。
我必须为两个需求编写查询。
获取特定患者的所有记录。我需要使用
PatientId从 PatientHostory、AppointmentHistory、PersonHistory 中提取所有记录。我们如何编写 SQL 来从给定 id 的同一张表中获取更多记录?UNION or JOIN?我需要从
all the HistoryTable for the supplied AuditUser Id获取所有记录。
我该如何为此编写查询?
【问题讨论】:
-
此表中的
firstname、lastname和dob是指用户还是患者?您是否也可以记录患者编号? -
@TI,
firstname, lastname不是患者表的一部分。但是当一个病人被创建时,我们在 person 表中为 basic 添加一条记录,然后在病人表中添加一个记录
标签: sql sql-server sql-server-2008 audit-logging