SQL SERVER的触发器不能像oracle 那样可以对单条的操作编制触发器,你得触发器
由于是操作多条 update table1 set field1='c'所以在
set field1=inserted.field中就会返回多个纪录,而update是不是到该去哪一个纪录的
由于是操作多条 update table1 set field1='c'所以在
set field1=inserted.field中就会返回多个纪录,而update是不是到该去哪一个纪录的
解决方案 »
- ORALCE社区呢?我怎么找不到啦!
- @item5这是个变量,我想把它用@item和5拼出来,如何做到?
- mysql-max和mysql
- SQLSERVERAGENT中一个日志错误:Unable to read local eventlog (reason: 事件日志文件已在读取间更改。)
- ====谁帮忙看一下这个SQL语句怎么写?====
- SQL语言如何实现同学录查询功能
- 遇到一个有点难度的问题,期待着高手的解答。关于查询记录的
- SQL的一个问题
- 价格在sql server中一般定义为什么类型好?(要能计算)
- 我用ACCESS做用户端窗体,用SQL SEVER做服务端的数据库。我想请问提高数据库的安全性加上用户登陆
- 怎么让数据库定时做某个操作?
- 有两个表,如何要通过A表触发器删除B表的多条相关记录!
得不到所需的结果,估计是你的触发器脚本有问题,你再仔细看看吧。
要不然就把你所想要得到的结果和实际得到的结果贴出来。
你先这样试试: create trigger Upd_table1
on table1
for update
as
Begin
update table2 set feild1=inserted.field1 from deleted,insrerted where
deleted.field1=table2.field1
end
Oracle可以设定触发的方式,行还是批。
SQLServer中的触发方式,按照本次触发的影响的数据放入 inserted, deleted这是两张临时表,是集合。
希望和你们成为朋友:
EMAIL
chengjunfong123
update table2 set feild1=inserted.field1 from deleted where
deleted.field1=table2.field1
这句话中的from子句中没有出现inserted这个表,inserted.field1是一个不确切的值,系统将无法更改table2.field1的值,改成下面的形式就可以了,
update table2 set feild1=inserted.field1 from deleted,inserted where
inserted.PK_field=deleted.PK_field and deleted.field1=table2.field1
PK_field 为表table1中的主键列,一般情况下,不应该update一个表的主键。
create trigger Upd_table1
on table1
for update
as
Begin
declare @field char(10)
select @field=field1 from inserted
update table2
set feild1=@field
where table2.field1=deleted.field1
end
另外,触发器的机制是单条的执行方式.