关于数据库触发器,更新触发的问题(急!能用即给分)

gsxyy1688 2007-02-26 02:29:27
小弟写了一个表更新时的处罚器代码如下:
CREATE TRIGGER [UpdateMySql] ON [dbo].[Employee]
FOR UPDATE
AS
begin
SET XACT_ABORT ON
declare @Em_ID varchar(20),@Em_name varchar(50),@secDep varchar(20)
select @Em_ID=Em_id,@Em_name=Em_name,@secDep=Dept_id from Inserted;
if @Em_name is not null
begin
if update(Em_name)
begin
update OPENROWSET('MSDASQL','DRIVER={MySQL ODBC 3.51 Driver};SERVER=192.0.0.97;PORT=3306;DATABASE=piaowu4_0_1;USER=root;PASSWORD=a;STMT=set names gb2312;OPTION=2049','select * from piaowu4_0_1.tbl_people') set [col_name]=@Em_name
where col_certNo=@Em_ID
end
end
if @Em_ID is not null
begin
if update(Dept_id)
begin
select @secDep=Dep_name from Department where Record_id=rtrim(@secDep);
select @secDep=isnull(rtrim([col_objId]),'1') from OPENROWSET('MSDASQL','DRIVER={MySQL ODBC 3.51 Driver};SERVER=192.0.0.97;PORT=3306;DATABASE=piaowu4_0_1;USER=root;PASSWORD=a;STMT=set names gb2312;OPTION=2049','select * from piaowu4_0_1.tbl_seconddept') where [col_name]=rtrim(@secDep)
update OPENROWSET('MSDASQL','DRIVER={MySQL ODBC 3.51 Driver};SERVER=192.0.0.97;PORT=3306;DATABASE=piaowu4_0_1;USER=root;PASSWORD=a;STMT=set names gb2312;OPTION=2049','select * from piaowu4_0_1.tbl_people') set fk_secondDeptId=convert(int,rtrim(@secDep))
where col_certNo=@Em_ID
end
end

if @@error<>0
rollback;

SET XACT_ABORT OFF
end

作用是更新MySql数据库中的表!
其中有时更新Em_name字段,有时更新dep_id字段,但是提示错误(无法为更新定位行,一些值可能在最后一次读取后更改!)但是当我把其中(if @Em_name is not null
begin
if update(Em_name)
begin
update OPENROWSET('MSDASQL','DRIVER={MySQL ODBC 3.51 Driver};SERVER=192.0.0.97;PORT=3306;DATABASE=piaowu4_0_1;USER=root;PASSWORD=a;STMT=set names gb2312;OPTION=2049','select * from piaowu4_0_1.tbl_people') set [col_name]=@Em_name
where col_certNo=@Em_ID
end
end)阴掉之后就可以了!快帮小弟解决呀!
...全文
380 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
utpcb 2008-05-30
  • 打赏
  • 举报
回复
很长啊
flush_520 2008-05-30
  • 打赏
  • 举报
回复
if @Em_name is not null and Em_ID is null

下面那句也是
if @Em_id is not null and Em_name is null

ps:为什么不写成两样一起更新呢
wwwtyb 2008-05-29
  • 打赏
  • 举报
回复
我是搞MSSQL的无法帮到你
不过我在你的程序里倒是学了点
哈哈....................

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧