当前位置:首页 » 编程语言 » sql调试触发器

sql调试触发器

发布时间: 2022-10-10 14:22:34

A. sql server 如何调试触发器!

一、打开sql查询分析器;

二、将以下sql语句复制到查询窗口并运行;

usepubs

createtriggertrigger_updateonauthors
forupdate
as
begin
print(updatelastname=hoho)
end

createprocauthors_procinsert
as
begin
updateauthorssetau_lname=hohowhereau_id=172-32-1176
end


三、在左边的对象浏览器中选择pubs->存储过程在authors_procinsert(如未出现请刷新pubs数据库)上右击弹出菜单选择“调试...”。

四、当运行到" update authors set au_lname=hoho where au_id=172-32-1176“时按“f11”即进入触发器代码。

B. 在PLSQL中触发器如何调试

1.
打开PL/SQL
Developer如果
在机器上安装了PL/SQL
Developer的话,打开PL/SQL
Developer界面输入
用户名,密码和host名字,这个跟在程序中web.config中配置的完全相同,点击确定
找到
需要调试的存储过程所在的包(Package
bodies),如PACK_ACTIVITY,点击右键,在弹出菜单中选择[查看],得到包中的所有存储过程和他们的代码.
2.
添加debug信息为了
能够单步跟踪存储过程,需要为其所在的包添加debug信息,右键点击需要调试的包,在弹出菜单中选中[添加调试信息](这个很重要).这样
就为包体添加了调试信息。
3.

试存储过程现在
所有的准备工作都做好了,可以调试跟踪存储过程了。选择
需要调试的存储过程,点击右键,在弹出菜单中
选择[测试],进去测试窗口.测试窗口中有为了测试该存储过程自动所产生的代码,当然你也可以自己另外加入和修改代码,对于我们目前只是为了调试存储过程,
自动生成的代码已经足够了。接着按照如下的步骤进行调试。
(1)添加存储过程所需要的参数,我们项目中的大多数存储过程都是需要参数
的,参数可以在测试窗口右下部分输入。如:GetPanNO_New需要一个输入参数v_employeeid,我们输入180,输出参数是mycursor,是查看结果的,不需要输入任何值。
(2)开始调试,点击[调试]菜单->[开始](或者按F9),就进去调试模式了,程序开始停在begin这一行.
(3)以后的调试过程跟我们熟悉的的调试过程就一样了:运行(Ctrl+R)单步
进入(Ctrl+N)单步
跳过(Ctrl+O)单步
退出(Ctrl+T)或者
点击debug工具条上的按扭:当按Ctrl+N进去存储过程的源代码中后
在这
个窗口中可以查看过程中的变量值和堆栈。
(4)调试运行完了后,可以查看结果如下(点击mycursor变量旁边的按钮).
4.
Tip
令人
比较郁闷的是我们项目中很多的存储过程都是一个SELECT语句,不管这个SELECT语句多么复杂(SELECT语句中有嵌套的子SELECT语句),它也只能作为一行代码,单步跟踪就没有什么意义了。

C. 如何调试触发器-数据库专栏,SQL Server

//-------------------------------------调试触发器//------------------------------------- 作者:四海为圈(原创) //------------------------------------- 1、创建存储过程以便触发触发器 3、选择单步运行存储过程 2、在触发事件的语句如:insert 、update 、delete语句时按f11 //------------------------------------- 本方法在sql server 2000+win2000 server 通过测试 本方法在vs.net 2003 + sql server 2000+win2000 server 通过测试 //-------------------------------------good转贴请注明来源 维护网络道德是每个网民的义务 //-------------------------------------实例教学:一、打开sql查询分析器 二、将以下sql语句复制到查询窗口并运行use pubscreate trigger trigger_update on authorsfor updateasbeginprint(update lastname=hoho)endcreate proc authors_procinsertasbeginupdate authors set au_lname=hoho where au_id=172-32-1176end三、在左边的对象浏览器中选择pubs->存储过程在authors_procinsert(如未出现请刷新pubs数据库)上右击弹出菜单选择“调试...”

D. sql server2012如何建立触发器

  • 首先你当然要有一个数据库了,这里我使用自己创建的数据库booksDB。

    在数据库booksDB上创建触发器,右击触发器->新建触发器,打开之后的界面如下所示

  • 6

    数据库的增删改查类似

E. sql2008 怎么调试触发器

在项目中,单击右键选择"添加"->"触发器",代码如下(validateyear.cs):
using
system;
using
system.data;
using
system.data.sqlclient;
using
microsoft.sqlserver.server;
public
partial
class
triggers
{
//
为目标输入现有表或视图并取消对特性行的注释
[microsoft.sqlserver.server.sqltrigger
(name="validateyear",
target="humanresources",
event="for
insert")]
public
static
void
validateyear()
{
//
用您的代码替换
sqlconnection
conn
=
new
sqlconnection("context
connection=true");
//定义查询
string
sql
=
"select
count(*)
"
+
"from
inserted
"
+
"where
year(modifieddate)<>2012";
sqlcommand
comm
=
new
sqlcommand(sql,
conn);
//打开连接
conn.open();
//获得行数
int
numbadrows
=
(int)comm.executescalar();
if
(numbadrows
>
0)
{
//get
the
sqlpipe
sqlpipe
pipe
=
sqlcontext.pipe;
//role
back
and
raise
an
error
comm.commandtext
=
"raiseerror('修改错误',11,1)";
//send
the
error
try
{
}
catch
{
}
system.transactions.transaction.current.rollback();
}
conn.close();
}
}
用于验证插入的数据是否合法,当插入表humanresources是,如果修改日期的年份不是2012将报错。
另外要注意的是要使用system.transactions.transaction.current.rollback(),必须添加system.transactions的引用

F. SQl中触发器怎样执行的

创建触发器 是特殊的存储过程,自动执行,一般不要有返回值。

1、后触发器 (AFTER,FOR)先执行对应语句,后执行触发器中的语句。

2、前触发器 并没有真正的执行触发语句(insert,update,delete),而是执行触发后的语句。

3、行级触发器 (FOR EACH ROW) 在SQL server 中不存在。

(6)sql调试触发器扩展阅读:

创建触发的语法

CREATE TRIGGER trigger_name --触发器名称

ON table_name --触发的表

[WITH ENCRYPTION]

FOR [DELETE, INSERT, UPDATE] --选择触发器类型

AS --触发后要做的语句

T-SQL语句

GO --结束标记

G. sql2008 怎么调试触发器

触发器一般在update,delete,insert 时候触发、、、你可以根据你写的触发器。在该表 执行相应的操作~~查看有没有执行触发器里的语句

H. 关于sql触发器调试问题

在sql中,触发器是一种特殊类型的存储过程,它不同于sql的存储过程。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表进行诸如update、
insert、
delete
这些操作时,sql
server
就会自动执行触发器所定义的sql
语句,从而确保对数据的处理必须符合由这些sql
语句所定义的规则。
触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。除此之外,触发器还有其它许多不同的功能:
(1)强化约束(enforce
restriction)
触发器能够实现比check
语句更为复杂的约束。
(2)跟踪变化(auditing
changes)
触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。
(3)级联运行(cascaded
operation)。
触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。
(4)存储过程的调用(stored
procere
invocation)。
为了响应数据库更新触,发器可以调用一个或多个存储过程,甚至可以通过外部过程的调用而在dbms(
数据库管理系统)本身之外进行操作。
由此可见,触发器可以解决高级形式的业务规则或复杂行为限制以及实现定制记录等一些方面的问题。例如,触发器能够找出某一表在数据修改前后状态发生的差异,并根据这种差异执行一定的处理。此外一个表的同一类型(insert、
update、
delete)的多个触发器能够对同一种数据操作采取多种不同的处理。
总体而言,触发器性能通常比较低。当运行触发器时,系统处理的大部分时间花费在参照其它表的这一处理上,因为这些表既不在内存中也不在数据库设备上,而删除表和插入表总是位于内存中。可见触发器所参照的其它表的位置决定了操作要花费的时间长短。
触发器的种类
sql
server
2000
支持两种类型的触发器:after
触发器和instead
of
触发器。其中after
触发器即为sql
server
2000
版本以前所介绍的触发器。该类型触发器要求只有执行某一操作(insert
update
delete)
之后,触发器才被触发,且只能在表上定义。可以为针对表的同一操作定义多个触发器。对于after
触发器,可以定义哪一个触发器被最先触发,哪一个被最后触发,通常使用系统过程sp_settriggerorder
来完成此任务。
instead
of
触发器表示并不执行其所定义的操作(insert、
update、
delete),而仅是执行触发器本身。既可在表上定义instead
of
触发器,也可以在视图上定义instead
of
触发器,但对同一操作只能定义一个instead
of触发器。

热点内容
android开发xml 发布:2024-12-22 10:00:20 浏览:63
sql服务器名称什么时候能写ip 发布:2024-12-22 09:53:19 浏览:128
域控制服务器怎么设置ip 发布:2024-12-22 09:43:23 浏览:882
csvreaderpython 发布:2024-12-22 09:43:13 浏览:768
linux更改用户 发布:2024-12-22 09:35:19 浏览:505
信息的编程加工 发布:2024-12-22 09:33:48 浏览:116
移动办公专家服务器地址写什么 发布:2024-12-22 09:25:13 浏览:147
编程CBA 发布:2024-12-22 09:10:11 浏览:288
糖豆上传视频 发布:2024-12-22 09:09:24 浏览:856
canvas压缩上传图片 发布:2024-12-22 08:53:47 浏览:189