admin 管理员组文章数量: 1184232
2024年4月16日发(作者:创建css样式)
触发器的用法.txt昨天是作废的支票;明天是尚未兑现的期票;只有今天才是现金,才
能随时兑现一切。人总爱欺骗自己,因为那比欺骗别人更容易。Oracle数据库无自增字段,
如果要实现我们可以通过触发器的方法实现
Oracle数据库自动增长列的实现过程:
◆1.创建序列
-- Create sequence
create sequence INNERID
minvalue 1
maxvalue 99999999999999
start with 1
increment by 1
cache 20
order;
◆2.--l 指当前序列
--l 指下一个序列
insert into admin values (l,'a');
insert into admin values (l,'b');
insert into admin values (l,'c');
insert into admin values (l,'d');
create table admin
(id varchar2(20),name varchar2(10));
--不断的插入序列的下一个值.
◆3.创建触发器(注:此处无法设置id的默认值为l )
CREATE OR REPLACE TRIGGER admin_tg
--admin id 的触发器
BEFORE INSERT ON admin FOR EACH ROW
BEGIN
SELECT L INTO : FROM DUAL;
END;
测试语句如下:
insert into admin (username) values ( '');
存储过程触发器:SQL存储过程和触发不能使用USE的应对方法
大家都知道在SQL的存储过程,触发中不能使用USE。
怎么办呢,当然可以直接用[databasename].[user].[tablename]这样来访问,但是某
些语句必须在当前数据库下执行,比
如sp_adduser等。
之前看到一篇文章,我测试了有问题。
原文:
这里提供一个解决方案:
使用Exec(ute)语句来改变当前数据库,不过要注意的是,数据库环境的更改只在
Execute语句结束前有效,所以你必须把
后面的语句和Execute放到一起。Example:
create proc test
as
exec('use pubs') exec sp_adduser 'test'
go
exec test
我自己试了一下,根据下面的语句执行没有问题:
使用Exec(ute)语句来改变当前数据库。
如下:
CREATE PROCEDURE cs
AS
BEGIN
exec('use sjdbmis; select plucode from txtplu')
END
GO
又如:
CREATE PROCEDURE cs
AS
BEGIN
exec('use sjdbmis; exec sp_adduser ''test''')
END
GO
(三)sql触发器:如何在SQL Server中使用触发器
触发器是一种特殊的存储过程,在使用触发器之前可以与存储过程进行比较,触发器主
要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名称而被直接调用。
触发器是一种特殊的存储过程,在使用触发器之前可以与存储过程进行比较,触发器主
要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名称而被直接调用。
触发器主要优点如下:
触发器是自动的:当对表中的数据作了任何修改之后立即被激活,触发器与数据库中的
表紧密相关,比如当对表执行INSERT、UPDATE或DELETE操作时,触发器就会自动执行。
触发器可以对数据库中的表进行嵌套的触发,一个触发器执行启动另一个触发器的操
作,这样的嵌套可以达到32层。
触发器可以强制限制,可以防止恶意或错误的 INSERT、UPDATE 以及 DELETE 操作,
并强制执行比CHECK约束定义的限制更为复杂的其他限制,虽CHECK约束已经在表定义
的时候建立好了,但触发器可以实现很多其它的约束限制,在约束所支持的功能无法满足应
用程序的功能要求时,触发器的优点就会体现。
在SQL Server中,已经包括两大类触发器:DML 触发器和 DDL 触发器。 DDL触
发器为SQL Server 2005中新增的。
当数据库中发生数据操作语言 (DML) 事件时将调用 DML 触发器。DML 事件包括在
指定表或视图中修改数据的 INSERT 语句、UPDATE 语句或 DELETE 语句。DML 触发
器可以查询其他表,还可以包含复杂的 Transact-SQL 语句。将触发器和触发它的语句作
为可在触发器内回滚的单个事务对待。如果检测到错误,则整个事务即自动回滚。
DDL 触发器是一种特殊的触发器,它在响应数据定义语言 (DDL) 语句时触发。它们
可以用于在数据库中执行管理任务,例如,审核以及规范数据库操作。像常规触发器一样,
DDL 触发器将激发存储过程以响应事件。但与 DML 触发器不同的是,它们不会为响应针
对表或视图的 UPDATE、INSERT 或 DELETE 语句而激发。相反,它们会为响应多种数据
定义语言 (DDL) 语句而激发。这些语句主要是以 CREATE、ALTER 和 DROP 开头的语
句。DDL 触发器可用于管理任务,例如审核和控制数据库操作。
了解到以上内容,我们就来看一下如何来创建一个DML触发器和一个DDL触发器。
在SQL Server 2000中我们创建触发器可以通过在表名上点右键->“所有任务”->“管
理触发器”来创建,然后在里面写上对应的 T-SQL 语句,也可以在查询分析器里面创建。
在SQL Server 2005中就不提供对应的表名进行操作了,需要直接通过写对应的T-SQL语
句了。
触发器的操作命令主要有如下几种格式:
创建触发器:
Create Trigger 名称
On 表名
For 类型
As
Sql语句
修改触发器:
Alter Trigger 名称
删除触发器:
版权声明:本文标题:触发器的用法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1713247674a625841.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论