一个简单的触发器
ALTER trigger WriteCreateDT
on dbo.Weight
for insert
as
begin
update car set isuse=1
end为何报错 “无法为更新行集定位:一些值可能已在最后读取后改变”而增加 Set nocount on 语句后(如下),就不报错了呢
ALTER trigger WriteCreateDT
on dbo.Weight
for insert
as
begin
set nocount on --增加这句
update car set isuse=1
endset nocount on 语句起和作用,网上大多说是不返回计数,可以提高性能,可这不只是性能的问题吧,报错啊
ALTER trigger WriteCreateDT
on dbo.Weight
for insert
as
begin
update car set isuse=1
end为何报错 “无法为更新行集定位:一些值可能已在最后读取后改变”而增加 Set nocount on 语句后(如下),就不报错了呢
ALTER trigger WriteCreateDT
on dbo.Weight
for insert
as
begin
set nocount on --增加这句
update car set isuse=1
endset nocount on 语句起和作用,网上大多说是不返回计数,可以提高性能,可这不只是性能的问题吧,报错啊
解决方案 »
- SqlServer 2005新增的查询分页跟之前的临时表分页效率有大差别?
- ManagementStudio中如何能让指针移动到条件行
- 急!关于SQL后台服务的问题请教。
- 救命啊,出事啦.老大要生气啦!!!!!!!!!!!!!!!!!解决不了就完啦
- 请问大家,主从表同时插入的时候,如何为他们建立关联,用什么方法最好
- Error 18483 "distributor_admin"
- 请问怎么在sql做一个计划任务,在每天的一个时刻执行一个储存过程.
- SSIS,Oracle 9i OLE DB连接管理器.
- 讨论,海量数据查询、统计性能优化算法!
- sql问题(50分)
- msyql查询优化
- 怎样在sqlserver2005中实现小计、合计
阻止在结果集中返回可显示受 Transact-SQL 语句或存储过程影响的行计数的消息。
你说的不是报错,是警告.应用程序中如果发生某些错误,会捕捉到此类提示信息并返回给用户,实际上程序并未报错中止
on dbo.a
for insert
as
begin
update b set id=id+1
END
INSERT INTO dbo.a
( id, c, d )
VALUES ( 1, -- id - int
'2', -- c - char(2)
'3' -- d - char(3)
)
我用你的脚本改了一下,做了测试,原脚本在我这里没有报错,所以我猜测要么你的B表中存在一些约束或者额外的触发器。如果没有,可能你的报错不是在SQLServer层面,而是在应用程序层面,这里有相似的例子,仅供参考:
http://topic.csdn.net/t/20030324/09/1567751.html
在程序端使用insert语句插入就不报错
在程序端使用如下方法时就报错。
adoquery.open;
adoquery.append;
adoquery.fieldbyname('主键字段').asstring:='值';
adoquery.post;
你把代码放到后台去执行,就会发现print出来的内容是黑色字,不是红色
应用程序的实现多种多样,确实说不好你的程序会不会因为捕捉这个返回的内容而终止
加上set nocount on 确实不会返回信息,但是你的问题还在于delphi那端的代码出了问题,调试一下,调试器可以捕捉到真正出错的地方的
on dbo.Weight
for insert
as
begin
set nocount on --增加这句
update car set isuse=1
end1.不增加那句,程序逻辑也没错
2.程序逻辑不错,不等于这个程序是好的,在触发器里对另一个表进行全表更新,恐怕没有程序员这么写的.
调试过了,代码执行adoquery1.post时报错,但不知为何要报这个错。
把调试报的错误内容也贴出来
为啥没条件呢
或者说ADO调用设置的问题能SET NOCOUNT ON解决就解决了吧
这样写触发起是否危险,那是另一个问题。
现在的问题是,为何报错。我将触发器中update语句增加了where条件,改为如下后,照样报错
ALTER trigger WriteCreateDT
on dbo.Weight
for insert
as
begin
update car set isuse=1 where isunse=0 --增加了条件where isuse=0
end