SQL多表视图更新的方法是哪几种?
发布时间:2022-04-26 09:40:56 所属栏目:系统 来源:互联网
导读:这篇文章给大家分享的是有关SQL多表视图更新的方法,我们可以利用触发器对多表视图进行更新,本文就主要介绍这个方法,那么具体怎样操作呢?接下来我们一起来了解看看。 其步骤就是:利用update操作触发器产生的2个虚拟表【inserted】用来存储修改的数据信息
这篇文章给大家分享的是有关SQL多表视图更新的方法,我们可以利用触发器对多表视图进行更新,本文就主要介绍这个方法,那么具体怎样操作呢?接下来我们一起来了解看看。 其步骤就是:利用update操作触发器产生的2个虚拟表【inserted】用来存储修改的数据信息和【deleted】表,然后将对应的数据更新到对应数据表中的字段信息中; 1.首先创建3个表: a.信息表: USE [SQL-LI] BEGIN TRANSACTION CHUANGJIAN_XINXIN_TAB --创建命名为【XINXIN_TAB】的数据表,同时不允许字段为空 CREATE TABLE XINXIN_TAB ( 姓名 NVARCHAR(10) NOT NULL, 性别 NVARCHAR(1) NOT NULL, 学号 INT NOT NULL, 班级 NVARCHAR(20) NOT NULL, 出生日期 DATE NOT NULL, CONSTRAINT XUEHAO_YUESU PRIMARY KEY CLUSTERED ([学号]ASC) ) COMMIT TRANSACTION CHUANGJIAN_XINXI_TAB GO b.明细分数表: USE [SQL-LI] CREATE TABLE FENSHU_TAB ( [学号] INT NOT NULL, [语文] DECIMAL(3,1) NOT NULL, [数学] DECIMAL(3,1) NOT NULL, [英语] DECIMAL(3,1) NOT NULL ) GO c.综合分数表: USE [SQL-LI] CREATE TABLE ZHONGHE_TAB ( [姓名] NVARCHAR(10) NOT NULL, [学号] INT NOT NULL, [总分] DECIMAL(4,1) NOT NULL, [平均分] DECIMAL(3,1) NOT NULL) GO 2.1.【信息表】和【明细分数表】插入对应表中的数据: USE [SQL-LI] --插入【XINXIN_TAB】表中的5条记录 INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[学号] ,[性别] ,[班级] ,[出生日期] ) VALUES('李晓峰',6080,'男','计算机','2013-05-03') INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[学号] ,[性别] ,[班级] ,[出生日期] ) VALUES('李晓峰1',6081,'男','计算机1','2013-05-04') INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[学号] ,[性别] ,[班级] ,[出生日期] ) VALUES('李晓峰2',6082,'男','计算机2','2013-05-05') INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[学号] ,[性别] ,[班级] ,[出生日期] ) VALUES('李晓峰3',6083,'男','计算机3','2013-05-06') INSERT INTO [DBO].XINXIN_TAB ([姓名] ,[学号] ,[性别] ,[班级] ,[出生日期] ) VALUES('张晓',6084,'女','美术','2013-05-07') INSERT INTO [DBO].FENSHU_TAB ([学号] ,[语文] ,[数学] ,[英语] ) VALUES(6084,99.7,98.7,59.4) GO 2.2.运算记录【综合分数表】的数据: 插入【ZHONGHE_TAB】中的数据 USE [SQL-LI] --声明3个变量分别用来接收【平均分】,【总分】,【姓名】,和一个控制循环的条件变量@I_WHILE_XUEHAO DECLARE @I_WHILE_XUEHAO INT,@ZONGFEN DECIMAL(4,1),@AVGFEN DECIMAL(3,1),@XINGMING NVARCHAR(10); SELECT @I_WHILE_XUEHAO =6080; --使这个变量【@I_WHILE_XUEHAO】的值指定在【学号】字段上 WHILE(@I_WHILE_XUEHAO >=6080 AND @I_WHILE_XUEHAO <6085) BEGIN --求取【平均分】,【总分】,【姓名】并存在声明的变量中 SELECT @ZONGFEN =(F.语文 +F.数学 +F.英语 ),@AVGFEN =(F.语文 +F.数学 +F.英语 )/3,@XINGMING =X.姓名 FROM[DBO].XINXIN_TAB AS X INNER JOIN [DBO].FENSHU_TAB AS F ON X.学号 =F.学号 WHERE X.学号 =@I_WHILE_XUEHAO --与【学号同步】 --将其变量的数据插入到【ZHONGHE_TAB】的对应字段上 INSERT INTO [DBO].ZHONGHE_TAB ([姓名] ,[学号] ,[平均分] ,[总分] ) VALUES(@XINGMING ,@I_WHILE_XUEHAO ,@AVGFEN ,@ZONGFEN ) SELECT @I_WHILE_XUEHAO +=1; --与【学号同步】 (编辑:济南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |