我有一个表t,它有一个名为trgInsAfter的"after insert"触发器.究竟我该如何调试呢?我不是这方面的专家,所以所执行的问题和步骤可能看起来很愚蠢.
到目前为止我执行的步骤是:1.连接到server instancevia SSMS(使用Windows Admin帐户)
右键单击SSMS左侧树中的触发器节点,然后双击打开它,触发器的代码在新的查询窗口中打开(调用此Window-1)为:blah ....,
ALTER TRIGGER trgInsAfter AS .... BEGIN ... END
Run Code Online (Sandbox Code Playgroud)打开另一个查询窗口(调用此Window-2),输入sql将一行插入表t:
insert t(c1,c2) values(1,'aaa')
Run Code Online (Sandbox Code Playgroud)在Window-1中设置一个断点(在触发器的代码中)
在Window-2中设置一个断点(插入SQL代码)
单击工具栏上的"调试"按钮,而"窗口2"是当前窗口
插入SQL代码的断点被命中,但是当我查看Window-1时,触发器代码中的断点有一个工具提示说 'unable to bind SQL breakpoint, object containing the breakpoint not loaded'
我可以理解一下:如何SSMS知道Window-1中的代码是触发器
我想调试?我不知道在哪里告诉SSMS'嘿,这个查询编辑器中的代码是表t的inssert触发器的代码'
有什么建议?
谢谢
Dam*_*ver 36
你实际上是在考虑这个问题.
我首先在一个窗口中运行此查询(进行设置):
create table X(ID int not null)
create table Y(ID int not null)
go
create trigger T_X on X
after insert
as
insert into Y(ID) select inserted.ID
go
Run Code Online (Sandbox Code Playgroud)
然后我可以丢弃那个窗口.我打开一个新的查询窗口,写道:
insert into X(ID) values (1),(2)
Run Code Online (Sandbox Code Playgroud)
并在该行上设置断点.然后我启动调试器(Debug从菜单或工具栏或Alt-F5)并等待(一段时间,调试器从未太快),以便它命中该断点.然后,在那里,我选择Step Into(F11).并且(稍微等待之后)打开一个新窗口,这是我的触发器,调试器停止的下一行代码是insert into Y...触发器中的行.我现在可以在触发器中设置我想要的任何其他断点.
| 归档时间: |
|
| 查看次数: |
41882 次 |
| 最近记录: |