Sql 我想从表中取出最后修改过的记录
我有一张主桌。我将获得一些添加到该表中的实时记录。我想获取在以前的现有记录中添加、更改或更改的所有记录 我怎样才能做到这一点 在使用usage_stats表之前,必须首先从sys.objects中搜索表并获取该对象id 若表中有标识列,则可以通过SQL查询找到最后插入的行信息。为此,我们有多种选择,如: 这三个函数都返回最后生成的标识值。但是,在每个功能中定义last的范围和会话不同Sql 我想从表中取出最后修改过的记录,sql,sql-server,Sql,Sql Server,我有一张主桌。我将获得一些添加到该表中的实时记录。我想获取在以前的现有记录中添加、更改或更改的所有记录 我怎样才能做到这一点 在使用usage_stats表之前,必须首先从sys.objects中搜索表并获取该对象id 若表中有标识列,则可以通过SQL查询找到最后插入的行信息。为此,我们有多种选择,如: 这三个函数都返回最后生成的标识值。但是,在每个功能中定义last的范围和会话不同 您可以使用两种常用方法: 通过触发器跟踪另一个表的更改 应该与此类似: CREATE TABLE Track
您可以使用两种常用方法:
- 通过触发器跟踪另一个表的更改
CREATE TABLE Tracking (
ID INT,
-- Your original table columns
TrackDate DATETIME DEFAULT GETDATE(),
TrackOperation VARCHAR(100))
GO
CREATE TRIGGER TrackingTrigger ON OriginalTable AFTER UPDATE, INSERT, DELETE
AS
BEGIN
INSERT INTO Tracking(
ID,
TrackOperation
-- Other columns
)
SELECT
ID = ISNULL(I.ID, D.ID),
TrackOperation = CASE
WHEN I.ID IS NOT NULL AND D.ID IS NOT NULL THEN 'Update'
WHEN I.ID IS NOT NULL THEN 'Insert'
ELSE 'Delete' END
-- Other columns
FROM
inserted AS I
FULL JOIN deleted AS D ON I.ID = D.ID -- ID is primary key
END
GO
- 在表中包括
、CreatedDate
和ModifiedDate
列IsDeleted
应具有当前日期的默认值,CreatedDate
应在每次更新数据时更新,并且在删除(而不是实际删除)时应标记ModifiedDate
。此选项比上一个选项需要更多的处理,并且您将无法跟踪连续更新IsDeleted
@@IDENTITY
SCOPE_IDENTITY
IDENT_CURRENT
CREATE TABLE Tracking (
ID INT,
-- Your original table columns
TrackDate DATETIME DEFAULT GETDATE(),
TrackOperation VARCHAR(100))
GO
CREATE TRIGGER TrackingTrigger ON OriginalTable AFTER UPDATE, INSERT, DELETE
AS
BEGIN
INSERT INTO Tracking(
ID,
TrackOperation
-- Other columns
)
SELECT
ID = ISNULL(I.ID, D.ID),
TrackOperation = CASE
WHEN I.ID IS NOT NULL AND D.ID IS NOT NULL THEN 'Update'
WHEN I.ID IS NOT NULL THEN 'Insert'
ELSE 'Delete' END
-- Other columns
FROM
inserted AS I
FULL JOIN deleted AS D ON I.ID = D.ID -- ID is primary key
END
GO