表A和表B有相同的记录,创建触发器实现表A更新任何字段的数据后把数据同步更新B表的相同记录

devtools/2024/9/23 7:12:25/

select * from students

select * from students2

–#创建学生表
CREATE TABLE students2 (
stu_num int NOT NULL,
stu_name varchar(50),
stu_gender varchar(10),
stu_age int NOT NULL,
PRIMARY KEY (stu_num)
)

CREATE TABLE students2 (
stu_num int NOT NULL,
stu_name varchar(50),
stu_gender varchar(10),
stu_age int NOT NULL,
PRIMARY KEY (stu_num)
)

–Test sql
insert into students values(1006,‘inserupdate’,‘mail’,20);
delete from students where stu_num=1002;
update students set stu_age=18 where stu_num=1006;

/**** Test Ok completed ***************
– UPDATE

CREATE TRIGGER trg_a_to_b
ON students
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE students2
SET students2.stu_name = inserted.stu_name,
students2.stu_gender = inserted.stu_gender,
students2.stu_age = inserted.stu_age
– 依此类推,为每个需要同步的列添加设置语句
–TableB.LastUpdated = GETDATE() – 假设有一个跟踪最后更新时间的列
FROM inserted
INNER JOIN deleted
ON inserted.stu_num = deleted.stu_num
INNER JOIN students2
ON students2.stu_num = inserted.stu_num
WHERE
– 下面的条件用于检查任何列是否发生了变化
(students2.stu_name <> inserted.stu_name OR
students2.stu_gender <> inserted.stu_gender OR
students2.stu_age <> inserted.stu_age)
END;
GO

USE [Testdb]
GO
/****** Object: Trigger [dbo].[trg_a_to_b] Script Date: 05/10/2024 21:49:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [dbo].[trg_a_to_b]
ON [dbo].[students]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE students2
SET students2.stu_name = inserted.stu_name,
students2.stu_gender = inserted.stu_gender,
students2.stu_age = inserted.stu_age
– 依此类推,为每个需要同步的列添加设置语句
–TableB.LastUpdated = GETDATE() – 假设有一个跟踪最后更新时间的列
FROM inserted
INNER JOIN deleted
ON inserted.stu_num = deleted.stu_num
INNER JOIN students2
ON students2.stu_num = inserted.stu_num
WHERE
– 下面的条件用于检查任何列是否发生了变化
(students2.stu_name <> inserted.stu_name OR
students2.stu_gender <> inserted.stu_gender OR
students2.stu_age <> inserted.stu_age)
END;

– INSERT
USE [Testdb]
GO
/****** Object: Trigger [dbo].[trg_After_InsertUpdate_students] Script Date: 05/10/2024 21:44:40 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

create TRIGGER [dbo].[trg_After_InsertUpdate_students]
ON [dbo].[students]
AFTER INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;

-- 插入操作同步
INSERT INTO students2 (stu_num, stu_name, stu_gender, stu_age)
SELECT i.stu_num, i.stu_name, i.stu_gender, i.stu_age
FROM inserted i
LEFT JOIN deleted d ON i.stu_num = d.stu_num
WHERE d.stu_num IS NULL;

END;

****/


http://www.ppmy.cn/devtools/39516.html

相关文章

2024最值得下载的苹果Mac电脑系统维护优化软件

随着Mac电脑在个人和专业领域的广泛使用&#xff0c;保持系统运行顺畅变得尤为重要。尽管macOS以其稳定性和高效性著称&#xff0c;但长时间累积的垃圾文件、缓存、以及不再使用的应用程序等&#xff0c;仍然会逐渐拖慢系统的运行速度。幸运的是&#xff0c;市场上有一些优秀的…

创建一个Spring Boot项目

文章目录 一、如何创建一个Spring Boot项目1.1 项目创建&#xff1a;专业版 or 社区版 or 网站创建1.2 数据配置1.3 项目启动1.4 代码编写 二、Spring Boot 项目文件介绍三、Web服务器四、根据HTTP状态码解决bug4.1 4044.2 500 五、Spring VS Spring Boot VS Spring Web MVC5.1…

指针系列三

文章目录 1.字符指针&#xff1a;2.数组指针&#xff1a;3.二维数组传参的本质4.函数指针变量typedef 关键字 5.函数指针数组6.转移表 1.字符指针&#xff1a; 字符指针&#xff0c;也称为字符串指针&#xff0c;是指向内存中的字符或字符串的指针。 在C语言中&#xff0c;字符…

推荐4个可用的github国内镜像

Github是全球最大的代码托管云平台&#xff0c;超过1亿用户在平台上分享代码及数据&#xff0c;深受生物信息学软件开发者的喜爱&#xff0c;并且现在发表文章&#xff0c;若涉及到代码&#xff0c;编辑还要求我们把代码及数据存放在github上&#xff0c;以便检查数据的真实性和…

Android RecyclerView

RecyclerView核心实现官方文档 Once you determine your layout, you need to implement your Adapter and ViewHolder. These two classes work together to define how your data is displayed. The ViewHolder is a wrapper around a View that contains the layout for an…

idea使用前的全局配置,一次配置,多次使用

前提&#xff1a;每次导入一个新的项目&#xff0c;就需要重新设置编码、maven、jdk、git版本等信息。实际每个项目所用到的配置信息是一致的&#xff0c;除非换一家公司&#xff0c;不然不会改动到这些内容。 idea版本&#xff1a;2024.1.1 1.1、全局Maven配置 IDEA启动页面…

使用nginx部署Vue项目

前提是后端已经跨域&#xff01; 下载nginx&#xff0c;在路径下使用cmd打开nginx&#xff0c;关闭nginx使用任务管理器details end task 把dist中的文件都放到html文件夹中 打开conf&#xff0c;找到nginx.conf&#xff0c;编辑以下内容 location就是刚才放dist文件的那个文…

7-zip的介绍

7-Zip 是一款开源的文件压缩工具&#xff0c;它支持多种压缩格式&#xff0c;包括其自己的.7z格式&#xff0c;以及.zip、.tar、.gz、.bzip2等。7-Zip 以其高压缩比和强大的功能而闻名&#xff0c;尤其是在处理.7z格式时&#xff0c;它提供了比传统.zip格式更高的压缩率。 以下…