今天練習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