当前位置:首页 » 编程语言 » sql怎么查看触发器
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql怎么查看触发器

发布时间: 2022-07-20 17:03:20

A. c语言怎么使用sql触发器

c语言怎么使用sql触发器:
定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。
常见的触发器有三种:分别应用于Insert , Update , Delete 事件。

我为什么要使用触发器?比如,这么两个表:

Create Table Student( --学生表
StudentID int primary key, --学号
....
)

Create Table BorrowRecord( --学生借书记录表
BorrowRecord int identity(1,1), --流水号
StudentID int , --学号
BorrowDate datetime, --借出时间
ReturnDAte Datetime, --归还时间
...
)

用到的功能有:
1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);
2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。
等等。

这时候可以用到触发器。对于1,创建一个Update触发器:

Create Trigger truStudent
On Student --在Student表中创建触发器
for Update --为什么事件触发
As --事件触发后所要做的事情
if Update(StudentID)
begin

Update BorrowRecord
Set StudentID=i.StudentID
From BorrowRecord br , Deleted d ,Inserted i --Deleted和Inserted临时表
Where br.StudentID=d.StudentID

end

理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。
一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是:
虚拟表Inserted 虚拟表Deleted

在表记录新增时 存放新增的记录 不存储记录
修改时 存放用来更新的新记录 存放更新前的记录
删除时 不存储记录 存放被删除的记录

一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧的记录到Deleted表,然后删除Student记录并写入新纪录。

对于2,创建一个Delete触发器
Create trigger trdStudent
On Student
for Delete
As
Delete BorrowRecord
From BorrowRecord br , Delted d
Where br.StudentID=d.StudentID

从这两个例子我们可以看到了触发器的关键:A.2个临时的表;B.触发机制。

B. 怎么在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;

C. SQL中如何查看触发器的原代码

sql
server
只要在创建触发器的时候没有指定with
encryption
选项,都能查看到源代码。
在smss的对象资源管理器中找到有触发器的表,展开,在下面的触发器项目下找到触发器的名字,双击(或者右击触发器名字,在菜单中选择编辑),
就能看到触发器的源代码了。

D. sql server知道触发器名如何查看里面代码

方法步骤如下:

1、首先打开计算机,进入计算机的对象资源管理器界面,在界面内找到如图下的文件夹并右键单击打开。

E. SQL数据库中触发器在哪可以查看到呢

系统的sysobject表中,xtype=‘TR’

select * from sysobjects where xtype=‘TR’
就能看到你的数据库中说有的触发器,及其相关参数了

F. 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
条件上,这样就能起到只更新插入的那一条数据的效果了,否则会出现更新了全表的问题。
---
以上,希望对你有所帮助。

G. 如何查询数据库中的所有触发器

select name from sysobjects where xtype='TR' --所有触发器
select name from sysobjects where xtype='P' --所有存储过程
select name from sysobjects where xtype='V' --所有视图
select name from sysobjects where xtype='U' --所有表

以上为SqlServer用法

Select object_name From user_objects Where object_type='TRIGGER'; --所有触发器
Select object_name From user_objects Where object_type='PROCEDURE'; --所有存储过程
Select object_name From user_objects Where object_type='VIEW'; --所有视图
Select object_name From user_objects Where object_type='TABLE'; --所有表

以上为Oracle用法

以上,希望对你有所帮助!