今天练习sqlserver,一开始感受应该像Oracle,Mysql语法差很少,可是通过一下午的奋战,才感受原来这三个数据库就是有区别啊,sql
我原来学习触发器的时候用的是Mysql,感受还行,可是今天采用的是sqlserver,就感受差异就是很大了。数据库
今天将部分代码展现给你们看看,函数
下面显示的是触发器用到的两个表sqlserver
--建立sc表 CREATE TABLE [sc]( [ScId] int NOT NULL, [SNo] int NOT NULL , [CNo] int NOT NULL , [Score] int DEFAULT NULL , PRIMARY KEY ([ScId]) );
--添加履历表 CREATE TABLE score_record ( SrId int NOT NULL, SNo int NOT NULL , CNo int NOT NULL , OldScore int NOT NULL , NewScore int NOT NULL , UpdateTime datetime NOT NULL , PRIMARY KEY (SrId), );
下面显示的是Mysql写的触发器学习
--Mysql写的触发器 --建立触发器,将修改先后的成绩插入到履历表 DROP TRIGGER IF EXISTS `trigger_sr`; DELIMITER // CREATE TRIGGER `trigger_sr` AFTER UPDATE ON `sc` FOR EACH ROW BEGIN INSERT INTO score_record SET SNo = new.SNo, CNo = new.CNo, OldScore = old.Score, NewScore = new.Score, UpdateTime = NOW() ; END // DELIMITER ;
下面显示的是Sqlserver写的触发器spa
--Sqlserver写的触发器 --建立触发器,将修改先后的成绩插入到履历表 CREATE TRIGGER trigger_sr on sc for update as declare @SNo int,@CNo int,@OldScore int,@NewScore int,@UpdateTime datetime BEGIN Select @OldScore=Score From Deleted; select @UpdateTime=getdate(); Select @SNo=SNo,@CNo=CNo,@NewScore=Score From inserted; INSERT INTO score_record(SNo,CNo,OldScore,NewScore,UpdateTime) values(@SNo,@CNo,@OldScore,@NewScore,@UpdateTime) END
这个只是触发器之间的差异,像储存过程,自定义函数等必定还有很大的区别,不过,如今的感受是学完一种数据库语言,其余的数据库学起来也是那样吧。code