在sql server2005 一个数据库中的两个表 实时表中记录更新时 历史表中添加相应记录的触发器写法
历史表为history_data实时表为realtime_data,两个表中的字段相同分别为time、a、b、c。实时表中数据变化时,在历史表中添加一条相应的记录的触发器...
历史表为 history_data 实时表为 realtime_data ,两个表中的字段相同 分别为 time、a 、b、c。实时表中数据变化时,在历史表中添加一条相应的记录的触发器写法。
展开
1个回答
展开全部
USE tempdb
GO
IF OBJECT_ID('history_data') IS NOT NULL
DROP TABLE history_data
GO
CREATE TABLE history_data
(DTIME DATE NULL,
A NVARCHAR(50) NULL,
B NVARCHAR(50) NULL,
C NVARCHAR(50) NULL,
cStyle NVARCHAR(10) NULL
)
GO
IF OBJECT_ID('realtime_data') IS NOT NULL
DROP TABLE realtime_data
GO
CREATE TABLE realtime_data
(DTIME DATE NULL,
A NVARCHAR(50) NULL,
B NVARCHAR(50) NULL,
C NVARCHAR(50) NULL
)
GO
--创建触发器
CREATE TRIGGER t_realtime_data
ON DBO.realtime_data
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
--将插入的行 或者是修改后的行保存
INSERT INTO history_data(DTIME,A,B,C,CSTYLE)
SELECT DTIME,A,B,C,'INSERTED' FROM INSERTED
--将删除的行 或者是修改前的行保存
INSERT INTO history_data(DTIME,A,B,C,CSTYLE)
SELECT DTIME,A,B,C,'DELETED' FROM DELETED
-- Insert statements for trigger here
END
GO
更多追问追答
追问
CSTYLE是什么?
这一句中 INSERT INTO history_data(DTIME,A,B,C,CSTYLE)
SELECT DTIME,A,B,C,'INSERTED' FROM INSERTED
的 'INSERTED' FROM INSERTED是何意?
我这'INSERTED' 为红色。。
追答
这是我帮你加的一个标识啊,你要追踪修改记录么,你肯定要知道修改前是什么样子,修改后是什么样子吧,CSTYLE= 'DELETED' 的表示 被删除的项 或者是 修改之前的数据,CSTYLE='INSERTED'表示 新增加的数据或者是 修改后的数据
本来就是红色的啊,这个百度显示颜色有问题的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询