社区
MS-SQL Server
帖子详情
关于一个触发器的写法
jjja
2003-08-21 09:31:36
又两个表t1(三个字段),t2(四个字段),这两个表的前三个字段名称和类型都相同,但是t2比t1多一个字段。
现在想写一个触发器,在t1发生insert时,将insert到t1中的记录插入到t2的前三列中。
谢谢
...全文
29
10
打赏
收藏
关于一个触发器的写法
又两个表t1(三个字段),t2(四个字段),这两个表的前三个字段名称和类型都相同,但是t2比t1多一个字段。 现在想写一个触发器,在t1发生insert时,将insert到t1中的记录插入到t2的前三列中。 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yczzg
2003-08-21
打赏
举报
回复
如果是默认值
create trigger [triggername] on t1
for insert
as
insert t2 (列1,列2,列3,列4) select 列1,列2,列3,指定值 as 列4 from inserted
go
yczzg
2003-08-21
打赏
举报
回复
如果是默认值
create trigger [triggername] on t1
for insert
as
insert t2 (列1,列2,列3,列4) select 列1,列2,列3,指定值 as 列4 from inserted
go
lxf31
2003-08-21
打赏
举报
回复
那就再INSERT一个语句
royiw
2003-08-21
打赏
举报
回复
create trigger [name] on t1
for insert
as
insert t2 (列1,列2,列3,列4,) select 列1,列2,列3,'insert' from inserted
go
jjja
2003-08-21
打赏
举报
回复
不对,没上面的错误,是俺搞错了,:)
如果我要根据插入的记录向t2插入相应列的同时还想给t2多出的那个字段指定一定的值,该怎么做?(比如t2多的字段是char类型,想给它赋‘insert’)。
jjja
2003-08-21
打赏
举报
回复
好像不行也
有错误:INSERT 语句的选择列表包含的项少于插入列表中的项。SELECT 语句中值的数目必须与 INSERT 语句中列的数目匹配。
lxf31
2003-08-21
打赏
举报
回复
我的写错了:)
对不起了,楼主,我弄混了
lxf31
2003-08-21
打赏
举报
回复
早上好大力哥
呵呵
pengdali
2003-08-21
打赏
举报
回复
create trigger [name] on t1
for insert
as
insert t2 (列1,列2,列3) select 列1,列2,列3 from inserted
go
lxf31
2003-08-21
打赏
举报
回复
create trigger [name] on t1
for insert
as
update t2 set t2.1= (select t1.1 from inserted)
t2.2=(select t2.2 from inserted)
t2.3=(select t2.3 from inserted)
go
Oracle中
触发器
示例详解
前言 在ORACLE系统里,
触发器
类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块。
触发器
类型
触发器
在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而
触发器
是由
一个
事件来启动运行。即
触发器
是当某个事件发生时自动地隐式运行。并且,
触发器
不能接收参数。所以运行
触发器
就叫触发或点火(firing)。ORACLE事件指的是对数据库的表进行的INSERT、UPDATE及DELETE操作或对视图进行类似的操作。ORACLE将
触发器
的功能扩展到了触发ORACLE,如数据库的启动与关闭等。所以
触发器
常用来完成由数据库的完整性约束难以完成的复杂业务规
sql总结.doc
1、索引 ·什么是索引 ·索引的基本原理 ·索引的基本
写法
·索引的分类 ·索引的作用 ·索引的优缺点 ·索引的建立原则 2、存储过程 ·什么是存储过程 ·存储过程的基本
写法
·存储过程的作用 ·存储过程的优缺点 ·存储过程的应用场景 3、
触发器
·什么是
触发器
·
触发器
的的基本
写法
·
触发器
的功能 ·
触发器
的优缺点 ·
触发器
的两种形式 ·
触发器
的应用场景 4、视图 ·什么是视图 ·视图的基本
写法
·视图在哪些情况下不能被增、删、改 ·视图的作用 ·视图的优缺点 ·视图的应用场景 5、游标 ·什么是游标 ·游标的作用 ·游标的分类 ·游标的基本用法 ·使用游标的优缺点 ·什么时候选择使用游标 1、 (1)索引是对数据库表中一列或多列进行排序的一种结构。 (2)Mysql中搜索引擎Innodb(聚簇索引)和Mysiam(非聚簇索引)都采用B+,oracle也采用B+树实现 注:聚簇索引:一张表只能建立
一个
聚簇索引,以主键建立索引。聚簇索引包括主键索引和二级索引(二级索引是在对非主键字段建立索引后,通过索引找到对应这个非主键字段的主键,再进行主键索引,找到B+树中叶子结点);(聚簇索引B+树中叶子结点存放的是数据和指向下一条数据的指针) 非聚簇索引:对主键和非主键字段建立索引时,直接找到B+树中的叶子结点,B+树中叶子结点存放的是对应数据的地址,并通过地址找到数据。 (3)Create index 索引名 on 表名(字段名) (4)索引分为聚簇索引和非聚簇索引 (5)索引的作用 1.创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 2.可以加大数据的检索速度,这也是创建索引的主要原因。 3.可以加速表与表之间的连接效率。 4.在分组排序时使用索引,可以减少分组排序的时间。 (6)索引的优缺点 索引的优点既索引的作用。 索引的缺点:1.建立索引会产生占据一定的空间。2.对表中的数据进行增、删、改的时候,索引也要动态的维护,这就降低了整数的维护速度。 (7)索引的建立原则 1.主外键 2.经常被查询的列 3.用于连接的字段 4.排序分组的字段 2、存储过程 (1)什么是存储过程? 存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 (2)存储过程的基本
写法
(oracle) Create or replace procedure 名称(参数) Is/as (变量的赋值例如:(a name%type)(a varchar(2))) Begin Sql语句以及判断条件 End 名称; (3)存储过程的作用 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而 一般SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速 度。 2.当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来 与数据库提供的事务处理结合一起使用。 3.存储过程可以重复使用,可减少数据库开发人员的工作量。 4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权。 (4)存储过程的优缺点 优点: 作用的四条加上 1.分布式工作。 应用程序和数据库的编码工作可以分别独立进行,而不会相互影响。 缺点:1.如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新 GetValue() 调用,等等,这时候估计比较繁琐了。 2.可移植性差 由于存储过程将应用程序绑定到数据库,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。 (5)存储过程的应用场景 1.通常,复杂的业务逻辑需要多条 SQL 语句。这些语句要分别地从客户机发送到服务器,当客户机和服务器之间的操作很多时,将产生大量的网络传输。如果将这些操作放在
一个
存储过程中,那么客户机和服务器之间的网络传输就会大大减少,降低了网络负载。 3、
触发器
(1)什么是
触发器
在Oracle中,
触发器
是一种特殊的存储过程,也是由一组sql语句以及一些业务逻辑代码组成的。数据库可以通过增、删、改来触发
触发器
。 (2)
触发器
的基本
写法
create or replace trigger tri_adddept AFTER INSERT on dept For each row //表级不用加 declare begin dbms_output.put_line('插入了新部门'); end ; (3)
触发器
的功能 1.配合sequence实现自增(oracle) 2.提供审计和日志记录 3.写复杂的业务逻辑代码 (4)
触发器
的优缺点 优点: 1.实现级联更改 2.能过实现比check更严格的约束,与CHECK 约束不同,
触发器
可以引用其它表中的数据。通过其他表中的数据的变化来设置更加复杂的约束。 缺点:滥用
触发器
会造成数据库及应用程序的维护困难。 (5)
触发器
的两种形式(行级
触发器
,表级
触发器
) 1.在语法上,行级
触发器
就多了一句话:for each row 2.在表现上,行级
触发器
,在每一行的数据进行操作的时候都会触发。 语句级
触发器
,对表的
一个
完整操作才会触发一次。 简单的说:行级
触发器
,是对应行操作的;语句级
触发器
,是对应表操作的。 (6)应用场景 作用+优点 4、视图 (1)什么是视图? 视图(VIEW)也被称作虚表,即虚拟的表,是一组数据的逻辑表示,其本质是对应于一条SELECT语句,结果集被赋予
一个
名字,即视图名字。 视图本身并不包含任何数据,它只包含映射到基表的
一个
查询语句,当基表数据发生变化,视图数据也随之变化。 (2)视图的基本
写法
Create view 视图名 as select * from emp; (3)视图在哪些情况下不能被增、删、改 (1)若视图的字段是来自字段表达式或常数,则不允许对此视图执行INSERT、UPDATE操作,允许执行DELETE操作; (2)若视图的字段是来自库函数,则此视图不允许更新; (3)若视图的定义中有GROUP BY子句或聚集函数时,则此视图不允许更新; (4)若视图的定义中有DISTINCT任选项,则此视图不允许更新; (5)若视图的定义中有嵌套查询,并且嵌套查询的FROM子句中涉及的表也是导出该视图的基表,则此视图不允许更新; (6)若视图是由两个以上的基表导出的,此视图不允许更新; (7)
一个
不允许更新的视图上定义的视图也不允许更新; 本表的行列子集视图一般是可更新的。若视图的属性来自集函数、表达式,则该视图肯定是不可以更新的。 (4)视图的作用 1、视图隐藏了底层的表结构,简化了数据访问操作,客户端不再需要知道底层表的结构及其之间的关系。 2、视图提供了
一个
统一访问数据的接口。(即可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限) 3、从而加强了安全性,使用户只能看到视图所显示的数据。 4、视图还可以被嵌套,
一个
视图中可以嵌套另
一个
视图。 (5) 视图的优缺点 优点:1.简单性。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使用户不必为以后的操作每次都指定全部的条件。 2.安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其他数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上。 3. 逻辑数据独立性。视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。 缺点:1.如果这个视图是由
一个
复杂的多表查询所定义,那么,即使是视图的
一个
简单查询,也要花费一定的时间。 2.修改限制:当用户试图修改视图的某些行时,数据库必须把它转化为对基本表的某些行的修改。对于简单视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修改的。 (6)视图的应用场景 1.访问频繁,更新少的一组数据 2.需要对一些数据限制访问权限时 5、游标(cursor) (1)什么是游标 游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标充当指针的作用。尽管游标能遍历结果中的所有行,但他一次只指向一行。 (2)游标的作用 游标的
一个
常见用途就是保存查询结果,以便以后使用。 (3)游标的分类 游标分为显示游标和隐式游标 隐式游标:是用户操作SQL时自动生成的,而显式游标是在声明块中直接定义的游标。 (4)游标的基本用法 通过ROWCOUNT查看游标指向的行:(隐式游标实例) 例: DECLARE v_count NUMBER; BEGIN SELECT COUNT(*) INTO v_count from dept; --返回
一个
隐式游标 dbms_output.put_line('SQL%ROWCOUNT = '||SQL%COUNT); END; / 执行结果:SQL%ROWCOUNT = 1 (显式游标基本) DECLARE CURSOR mycur IS SELECT * FROM dept; deptinfo dept%ROWTYPE; BEGIN IF mycur%ISOPEN THEN NULL; ELSE OPEN mycur; END IF; LOOP FETCH mycur INTO deptinfo; EXIT WHEN mycur%NOTFOUND; dbms_output.put_line('部门名称:'||deptinfo.dname); END LOOP; END; (配合for) DECLARE CURSOR mycur IS SELECT * FROM dept; deptinfo dept%ROWTYPE; BEGIN For test in mycur loop EXIT WHEN mycur%NOTFOUND; dbms_output.put_line('部门名称:'||test.dname); END LOOP; END; (5)游标的优缺点 优点: 游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作; 它还提供对基于游标位置而对表中数据进行删除或更新的能力 缺点: 处理大数据量时,效率低下,占用内存大 (6)什么时候选择使用游标? 一般是在循环处理的时候使用。 比如你判断
一个
班上的同学数学成绩怎么样,你就可能用游标,先把全部的成绩查询到游标中,之后再循环一条条进行判断处理。
MySQL
触发器
Re: MySQL
触发器
============================= #
触发器
概念
触发器
,顾名思义,就是当执行某个事件的时候触发另
一个
事件的执行!数据库中的
触发器
是和表关联的特殊的存储过程,它可以在插入、删除或修改该表表...
封装quartz任务调度,集成groovy,实现在线任务编辑系统
JobUtil.createJob(String jobName,String triggerName,String runTime) 封装创建任务的工具,第
一个
参数任务名称(唯一),第二个参数
触发器
名称(唯一),最后
一个
参数是任务运行时间,参考quartz
写法
。
SQL Server
触发器
的
写法
触发器
的概念很容易理解,可以简单地看成 事件-条件-动作规则。即特定的事件发生并满足条件,就执行动作,否则啥也不干。 但是
触发器
的
写法
不同的书却有很大区别,并且有些在SQL server 2008 R2上并不能执行,这里记录一种 insert / update / delete
触发器
。 ...
MS-SQL Server
34,590
社区成员
254,589
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章