今天练习sqlserver,一开始感觉应该像Oracle,Mysql语法差不多,但是经过一下午的奋战,才感觉原来这三个数据库就是有区别啊,
我原来学习触发器的时候用的是Mysql,感觉还行,但是今天采用的是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写的触发器
--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
这个只是触发器之间的差别,像储存过程,自定义函数等一定还有很大的区别,不过,现在的感觉是学完一种数据库语言,其他的数据库学起来也是那样吧。