触发器实现对插入数据的字段更改 Oracle+SQL Server
来源:互联网 发布:火龙女电影知乎 编辑:程序博客网 时间:2024/05/17 00:00
最近有个使用触发器实现对插入数据的某个列做更改的需求,因此整理了Oracle和SQL Server对于此类需求的触发器写法,本文仅提到了Insert触发器。
首先我们创建一张表:
--创建Test表Create table test(id int primary key,name varchar(20),sex varchar(1),status int)
我们的目的是实现新插入的数据满足sex字段为null时就把status设为1的需求,可根据实际需要更改条件。
因此SQL Server的写法为:
Create trigger [dbo].[trg1] on [dbo].[test] for insert as Declare c cursor for select id,sex from insertedDeclare @id intDeclare @sex varchar(1)Open cFETCH NEXT FROM c INTO @id,@sexWhile @@FETCH_STATUS = 0Beginif @sex is nullupdate dbo.test set status=1 where id=@id --这里使用主键进行更新以便效率最大化FETCH NEXT FROM c INTO @id,@sexENDCLOSE cDEALLOCATE c
Oracle的写法为:
Create or replace trigger trg1 before insert on testreferencing new as new old as oldfor each rowBegin if :old.sex is null then :new.status:=1; end if;End trg1;
也可以实现同样的功能。
总结与比较:
我们发现由于Oracle提供了before/after的触发器写法因此实现起来更为简单,而SQL Server只能依靠游标来实现,显然Oracle的实现办法更加简单明了。
但并不是说所有情况下Oracle的语法都更好,某些时候SQL Server的语法也可以实现Oracle触发器很难实现的功能。
0 0
- 触发器实现对插入数据的字段更改 Oracle+SQL Server
- 实现插入新数据字段自增长的触发器(Oracle)
- 【Sql Server】使用触发器把一个表中满足条件的数据部分字段插入到另一个表中
- ORACLE数据库中为每个数据表建立序列字段插入值的触发器的SQL脚本
- SQL Server 和 Oracle对字段的操作
- SQL Server更改表的字段类型
- sqlserver/oracle当插入表数据时同时修改其中一个字段的触发器
- Sql Server触发器,往一个表中插入数据
- SQL server触发器、存储过程操作远程数据库插入数据,解决服务器已存在的问题
- Sql Server 和 Oracle触发器的使用
- 【SQL server】数据的插入
- Sql触发器: 数据更改,保存之前的数据
- SQL SERVER触发器实现
- 数据库插入触发器 sql->oracle
- 用触发器对SQL Server数据库进行数据备份
- 用触发器对SQL Server数据库进行数据备份
- Oracle中通过存储过程,Function,触发器实现解析时间类型的字段并插入的对应的数据表中
- Oracle用触发器实现插入数据主键自增
- OCI64位接客车版本配置
- ButterKnife点击事件无效或控件绑定为空
- Spark进阶(三)
- Android开发之--实时更新系统时间
- 树链剖分
- 触发器实现对插入数据的字段更改 Oracle+SQL Server
- HDU 5682 zxa and leaf 二分 树形dp
- Google发布机器学习平台Tensorflow游乐场~带你玩神经网络
- DataSet自定义添加table并添加数据
- intellij idea开发android从入门到精通(五)————Mac 系统下安装 IntelliJ IDEA
- 移植OPENNI到DM6446上面
- python安装库后无法成功导入模块
- linux信号
- SQL Server数据库扩容方法总结