Sql 如何创建触发器以检查表是否已更改
我是初学者,我试图创建触发器来检查表是否更改,然后跟踪更改后的表并将其插入另一个表中 我创建了一个名为history的表,这是我的代码Sql 如何创建触发器以检查表是否已更改,sql,sql-server-2008,Sql,Sql Server 2008,我是初学者,我试图创建触发器来检查表是否更改,然后跟踪更改后的表并将其插入另一个表中 我创建了一个名为history的表,这是我的代码 create table history ( ProjectNo INT , UserName NVARCHAR(50), ModifiedDate date, Budget_Old int, Budget_New int, ) 创造了这个触发器 CREATE TRIGGER t1 on history on project AFTER UPDATE AS
create table history
(
ProjectNo INT ,
UserName NVARCHAR(50),
ModifiedDate date,
Budget_Old int,
Budget_New int,
)
创造了这个触发器
CREATE TRIGGER t1 on history
on project AFTER UPDATE
AS BEGIN
IF UPDATE(Project.Pnumber,Project.Budget)
INSERT INTO dbo.history (ProjectNo , Username,ModifiedDate,Budget_Old,Budget_New)
SELECT
d.ProjectNo, suser_name() ,GETDATE(),d.Budget,i.budget
FROM
Deleted d , inserted i
where d.projectno = i.projectno
END
我认为我的假设是错误的,但我应该怎么做才能使我的查询正确运行呢
要在历史记录表中插入此值?plz help me and sorry for bad English触发器可以访问两个逻辑表,这两个逻辑表的结构与我假设的us
项目所定义的表相同
- 插入,这是要放入表中的新数据
- 已删除,即表中的旧数据
因此,可以通过以下方式获取旧值:
CREATE TRIGGER t1
ON dbo.Project AFTER UPDATE
AS
INSERT INTO dbo.history (ProjectNo , Username)
SELECT d.ProjectNo , d.Username
FROM DELETED d
如果您只需要在表历史记录中有一条特定项目的记录,那么您将基于projectNo使用内部连接,并相应地更新历史记录表。它的工作伙伴享受
CREATE TRIGGER tRIGGERNAME1
BEFORE UPDATE on history
FOR EACH ROW
BEGIN
INSERT INTO dbo.history (ProjectNo ,Budget_Old,Budget_New)
VALUES(:OLD.ProjectNo,:OLD.Budget_Old,:NEW.Budget_New);
END;
我编辑了我的问题你能看到它做了什么吗?没用,我终于做到了^_^