我是初学者,我试图创建触发器以检查表是否已更改然后我跟踪已更改并将其插入另一个表
我创建了一个名为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 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
我认为我的if语句是错误的,但是我应该怎样做才能让我的查询正常运行 在历史表中插入此值? PLZ帮助我,对不起英语不好意思
答案 0 :(得分:1)
触发器可以访问两个逻辑表,这些逻辑表的结构与我们假设的Project
所定义的表的结构相同。
所以你可以用这种方式得到旧值:
CREATE TRIGGER t1
ON dbo.Project AFTER UPDATE
AS
INSERT INTO dbo.history (ProjectNo , Username)
SELECT d.ProjectNo , d.Username
FROM DELETED d
如果您需要在表历史记录中只有一个特定项目的记录,那么您将使用基于projectNo的内部联接并相应地更新历史记录表。
答案 1 :(得分:0)
它的作品很享受!!!!!!!!!!!
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;