sql触发器查看
系统的sysobject表中,xtype=‘TR’
select * from sysobjects where xtype=‘TR’
就能看到你的数据库中说有的触发器,及其相关参数了
⑵ sql触发器结果显示
点击运行即可。在sql软件中,触发器要显示结果,需要点击运行按钮即可,SQL是具有数据操纵和数据定义等历乎梁多顷拿种功能肢运的数据库语言。
⑶ SQL中如何查看触发器的原代码
sql
server
只要在创建触发器的时候没有指定with
encryption
选项,都能查看到源代码。
在smss的对象资源管理器中找到有触发器的表,展开,在下面的触发器项目下找到触发器的名字,双击(或者右击触发器名字,在菜单中选择编辑),
就能看到触发器的源代码了。
⑷ 如何查看SQL数据库中所有的触发
1)查看表中的触发器类型:x0dx0asp_helptrigger:返回对当前数据库的指定表定义的DML触发器的陆稿类型。sp_helptrigger不能用于DDL触发器。x0dx0a示例:EXECsp_helptrigger'表名'x0dx0ax0dx0a2)查看触发器的有关信息:x0dx0asp_help:报告早渗孝有关数据库对象(sys.sysobjects兼容视图中列出的所有对象)、用户定义数据类型或某种数据类型的信息。x0dx0a示例:EXECsp_help'触发器名'x0dx0ax0dx0a3)显示触发器的定义:x0dx0asp_helptext:显示规则、默认值、未加密的存储过程、用户定义函数、喊困触发器或视图的文本。x0dx0a示例:EXECsp_helptext'触发器名'x0dx0ax0dx0a4)查看当前库中所有的触发器:x0dx0a查询脚本:SELECT*FROMSysobjectsWHERExtype='TR'x0dx0ax0dx0a5)查看当前库中所有的触发器和与之相对应的表:x0dx0a查询脚本:SELECTtb2.nameAStableName,tb1..parent_obj=tb2.idWHEREtb1.type='TR'
⑸ 怎么在sql2000查找触发器
最基本的触发器是针对表的insert、update、delete这三种操作来的。触发器可以建立在表上,也可以建立在视图上。建立在表上的触发器会在表内容发生改变时触发。建立在视图上的触发器会在视图内容改变时触发。注意,视图触发器仅会在明确对视图进行操作的sql语句执行时才会触发,当基本表的内容发生改变而引起视图内容变化时,不会触发视图触发器。
下面是建立表触发器的代码:
create
or
replace
trigger
tg_e_contact
before
update
or
insert
or
delete
on
e_contact
for
each
row
begin
if
inserting
then
insert
into
[email protected]
values
(:new.telephone,
:new.employeeid,
:new.status);
else
if
updating
then
update
[email protected]
s
set
s.telephone
=
:new.telephone,
s.employeeid
=
:new.employeeid,
s.status
=
:new.status
where
s.employeeid
=
:old.employeeid;
else
if
deleting
then
delete
from
[email protected]
s
where
s.employeeid
=
:old.employeeid;
end
if;
end
if;
end
if;
end;
下面是建立视图触发器的代码:(注意里面的instead
of)
create
or
replace
trigger
tg_e_contact
before
instead
of
update
or
instead
of
insert
or
instead
of
delete
on
e_contact
for
each
row
begin
if
inserting
then
insert
into
[email protected]
values
(:new.telephone,
:new.employeeid,
:new.status);
else
if
updating
then
update
[email protected]
s
set
s.telephone
=
:new.telephone,
s.employeeid
=
:new.employeeid,
s.status
=
:new.status
where
s.employeeid
=
:old.employeeid;
else
if
deleting
then
delete
from
[email protected]
s
where
s.employeeid
=
:old.employeeid;
end
if;
end
if;
end
if;
end;
⑹ sql如何查看表触发器信息:就是我想要看这个表有几个触发器 还有触发器的名字 用 语句实现!!
呵呵,看到你的这个问题了,回答一下,希望能给你增加印象。
由于sqlserver
没信兆有oracle中的行级触发器的概念,触发器如下:
create
trigger
[tc2]
on
[dbo].[teacher]
for
insert,update
as
if
(select
salary
from
inserted)<3000
update
teacher
set
salary=3000
and
tid=
(select
tid
from
inserted)
说明:当你插入数据的时候,这条数据是存放在【inserted】表中的,在这个表中把【teacher】表隐坦老的主键得到(假如是【tid】)然后把这个主键信息灶升加到where
条件上,这样就能起到只更新插入的那一条数据的效果了,否则会出现更新了全表的问题。
---
以上,希望对你有所帮助。
⑺ 如何查看sql server是否有触发器
1、通过可视化操作来管理和查看触发器
在Microsoft SQL Server Management Studio中,选中某一数据库的某一张表时,在“对象资源管理器详细”窗口中有“触发器”项。
通过“触发器”的右键菜单功能,我们可以新建触发器。如果原来的表中已经存在了触发器,通过双击“触发器”项可以查看到具体的触发器,在此处可以执行 修改、删除等操作。
2、通过查询分析器来管理和查看触发器
1)查看表中的触发器类型:
sp_helptrigger:返回对当前数据库的指定表定义的 DML 触发器的类型。sp_helptrigger 不能用于 DDL 触发器。
示例: EXEC sp_helptrigger '表名'
2)查看触发器的有关信息:
sp_help:报告有关数据库对象(sys.sysobjects 兼容视图中列出的所有对象)、用户定义数据类型或某种数据类型的信息。
示例: EXEC sp_help '触发器名'
3)显示触发器的定义:
sp_helptext:显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本。
示例: EXEC sp_helptext '触发器名'
4)查看当前库中所有的触发器:
查询脚本:SELECT * FROM Sysobjects WHERE xtype = 'TR'
5)查看当前库中所有的触发器和与之相对应的表:
查询脚本:SELECT tb2.name AS tableName,tb1.name AS triggerName FROM Sysobjects tb1 JOIN Sysobjects tb2 ON tb1.parent_obj=tb2.id WHERE tb1.type='TR'
⑻ SQL Server触发器如何查看是什么原因发动了触发器
查看日志,我们的系统都有操作日志的,不知道你们的有没有,触发器触发的数据肯定是有关联的,禅绝燃通过关联id或者相关贺虚code,反着查一下,是哪条数据搞宏李鬼
⑼ sql server知道触发器名如何查看里面代码
方法步骤如下:闭闭友
1、首先打开计算机,进入计算机的对象资源管理器界面,在界面内找到如图下的文件夹并右键单击打开。
⑽ SQL中,触发器是什么
1. 基本概念x0dx0a触发器是特殊的存储过程,基于一个表创建,主要作用就是实现由主键和外键所不能保证的复杂的参照完整性和数据一致性。x0dx0a当触发器所保护的数据发生变化(update,insert,delete)后,自动运行以保证数据的完整性和正确性。通俗的说:通过一个动作(update,insert,delete)调用一个存储过程(触发器)。x0dx0a2. 类型x0dx0a(1)DML触发器x0dx0a在数据库中发生数据操作语言(DML)事件时将启用。DML 事件包括在指定表或视图中修改数据的 INSERT 语句、UPDATE 语句或 DELETE 语句。DML 触发器可以查询其他表,还可以包含复杂的 T-SQL 语句。系统将触发器和触发它的语句作为可在触发器内回滚的单个事务对待,如果检测到错误(例如,磁盘空间不足),则整个事务即自动回滚。x0dx0a(2)DDL 触发器x0dx0aSQL Server 2005 的新增功能。当服务器或数据库中发生数据定义语言(DDL)事件时将调用这些触发器。但与DML触发器不同的是,它们不会为响应针对表或视图的UPDATE、INSERT或DELETE语句而激发,相反,它们会为响应多种数据定义语言(DDL)语句而激发。这些语句主要是以CREATE、ALTER和DROP开头的语句。DDL触发器可用于管理任务,例如审核和控制数据库操作。x0dx0a 创建DML触发器x0dx0a1. 使用存储过程模板创建存储过程x0dx0a在【对象资源管理器】窗口中,展开“数据库”节点,再展开所选择的具体数据库节点,再展开“表”节点,右击要创建触发器的“表”,选择“新建触发器”命令,如图所示:x0dx0a在右侧查询编辑器中出现触发器设计模板,用户可以在此基础上编辑触发器,单击“执行”按钮,即可创建该触发器。x0dx0ax0dx0a2. 使用T-SQL语句创建表x0dx0aCREATE TRIGGER 触发器x0dx0aON 表名x0dx0aFOR[update,insert,delete ]x0dx0aAS SQL语句x0dx0a例9-6:创建基于表reader ,DELETE操作的触发器。x0dx0aUSE Libraryx0dx0aGOx0dx0aIF EXISTS(SELECT name FROM sysobjectsx0dx0a WHERE name='reader_d' AND type='TR')x0dx0aDROP TRIGGER reader_d --如果已经存在触发器reader_d则删除x0dx0aGOx0dx0aCREATE TRIGGER reader_d --创建触发器x0dx0aON reader --基于表 x0dx0aFOR DELETE --删除事件x0dx0aASx0dx0aPRINT '数据被删除!' --执行显示输出x0dx0aGOx0dx0a 试试吧!x0dx0a应用:x0dx0aUSE Libraryx0dx0aGOx0dx0aDELETE readerx0dx0awhere Rname='aaa'x0dx0a执行结果:x0dx0a数据被删除!x0dx0a(所影响的行数为 1 行)x0dx0a例9-7:在表borrow中添加借阅信息记录时,得到该书的应还日期。x0dx0a说明:在表borrow中增加一个应还日期SReturnDate。x0dx0aUSE Libraryx0dx0aIF EXISTS (SELECT name FROM sysobjectsx0dx0aWHERE name ='T_return_date' AND type='TR')x0dx0aDROP TRIGGER T_return_datex0dx0aGOx0dx0aCREATE TRIGGER T_return_date --创建触发器x0dx0aON Borrow --基于表borrowx0dx0aAfter INSERT --插入操作x0dx0aASx0dx0a--查询插入记录INSERTED中读者的类型x0dx0aDECLARE @type int,@dzbh char(10),@tsbh char(15)x0dx0aSET @dzbh=(SELECT RID FROM inserted)x0dx0aSET @tsbh=(SELECT BID FROM inserted)x0dx0aSELECT @type= TypeIDx0dx0aFROM readerx0dx0aWHERE RID=(SELECT RID FROM inserted)--副本x0dx0a/*把Borrow表中的应还日期改为x0dx0a当前日期加上各类读者的借阅期限*/x0dx0aUPDATE Borrow SET SReturnDate=getdate()+x0dx0aCASE x0dx0a WHEN @type=1 THEN 90x0dx0a WHEN @type=2 THEN 60x0dx0a WHEN @type=3 THEN 30x0dx0aENDx0dx0aWHERE RID=@dzbh and BID=@tsbhx0dx0a应用:x0dx0aUSE Libraryx0dx0aINSERT INTO borrow(RID,BID) values(','TP85-08')x0dx0a查看记录:x0dx0a x0dx0a例9-8:在数据库Library中,当读者还书时,实际上要修改表brorrowinf中相应记录还期列的值,请计算出是否过期。x0dx0aUSE Libraryx0dx0aIF EXISTS(SELECT name FROM sysobjectsx0dx0aWHERE name='T_fine_js' AND type='TR')x0dx0aDROP TRIGGER T_fine_jsx0dx0aGOx0dx0aCREATE TRIGGER T_fine_jsx0dx0aON borrowx0dx0aAfter UPDATEx0dx0aASx0dx0aDECLARE @days int,@dzbh char(10),@tsbh char(15)x0dx0aSET @dzbh=(select RID from inserted)x0dx0aSET @tsbh=(select BID from inserted)x0dx0aSELECT @days=DATEDIFF(day, ReturnDate, SReturnDate)x0dx0a--DATEDIFF函数返回两个日期之差,单位为DAYx0dx0aFROM borrowx0dx0aWHERE RID=@dzbh and BID=@tsbhx0dx0aIF @days>0x0dx0a PRINT '没有过期!'x0dx0aELSEx0dx0a PRINT '过期'+convert(char(6),@days)+'天'x0dx0aGOx0dx0a应用:x0dx0aUSE Libraryx0dx0aUPDATE borrow SET ReturnDate=-12-12'x0dx0aWHERE RID=' and BID='TP85-08'x0dx0aGOx0dx0a执行结果:x0dx0a过期-157 天x0dx0a(1 行受影响)x0dx0a例9-9:对Library库中Reader表的 DELETE操作定义触发器。x0dx0aUSE Libraryx0dx0aGOx0dx0aIF EXISTS(SELECT name FROM sysobjectsx0dx0a WHERE name='reader_d' AND type='TR')x0dx0aDROP TRIGGER reader_dx0dx0aGOx0dx0aCREATE TRIGGER reader_dx0dx0aON Readerx0dx0aFOR DELETEx0dx0aASx0dx0aDECLARE @data_yj intx0dx0aSELECT @data_yj=Lendnumx0dx0aFROM deletedx0dx0aIF @data_yj>0x0dx0a BEGINx0dx0a PRINT '该读者不能删除!还有'+convert(char(2),@data_yj)+'本书没还。x0dx0a ROLLBACKx0dx0a ENDx0dx0aELSEx0dx0a PRINT '该读者已被删除!'x0dx0aGOx0dx0a应用:x0dx0aUSE Libraryx0dx0aGOx0dx0aDELETE Reader WHERE RID='x0dx0a执行结果:x0dx0a该读者不能删除!还有4 本书没还。x0dx0a 修改触发器x0dx0aALTER TRIGGER 触发器x0dx0a 删除触发器x0dx0aDROP TRIGGER 触发器x0dx0a 查看触发器x0dx0asp_helptext trigger_namex0dx0asp_helptrigger table_name